Saya mencoba untuk menyatakan konstan di Go, tetapi itu membuat kesalahan. Adakah yang bisa membantu saya dengan sintaks mendeklarasikan konstanta di Go?
Ini kode saya:
const romanNumeralDict map[int]string = {
1000: "M",
900 : "CM",
500 : "D",
400 : "CD",
100 : "C",
90 : "XC",
50 : "L",
40 : "XL",
10 : "X",
9 : "IX",
5 : "V",
4 : "IV",
1 : "I",
}
Ini adalah kesalahannya
# command-line-arguments
./Roman_Numerals.go:9: syntax error: unexpected {
non-declaration statement outside function body
pada waktu kompilasi sebenarnya. Bagaimana bisa?var romanNumeralDict map[int]string = map[int]string{...}
dalam kasus seperti itu.:=
luar fungsi.Anda dapat membuat konstanta dengan berbagai cara:
Anda juga dapat membuat konstanta enum:
Anda tidak dapat membuat konstanta peta, array, dan ini ditulis dengan efektif :
sumber
Anda dapat meniru peta dengan penutupan:
Cobalah di taman bermain Go
sumber
map
(3) Fungsi anonim mengembalikan "fungsi yang menerima int dan mengembalikan string" (4) Fungsi yang dikembalikan melakukan int -> string pemetaan dengan menggunakanmap
(5) Jalankan fungsi anonim segera dan tetapkan fungsi yang dikembalikan ke variabel. Variabel ini bisa digunakan seperti fungsi, dan efeknya seperti peta.Dan seperti yang disarankan di atas oleh Siu Ching Pong-Asuka Kenji dengan fungsi yang menurut saya lebih masuk akal dan memberi Anda kenyamanan tipe peta tanpa fungsi pembungkus di sekitarnya:
Coba ini di play.golang.org.
sumber
Seperti yang dinyatakan di atas untuk mendefinisikan peta sebagai konstanta tidak mungkin. Tapi Anda bisa mendeklarasikan variabel global yang merupakan struct yang berisi peta.
Inisialisasi akan terlihat seperti ini:
sumber
romanNumeralDict.m[1000] = "New value"