Rumah > Artikel > pembangunan bahagian belakang > Mengapakah Saya Tidak Boleh Menggunakan Pembolehubah dalam Go Struct Tag?
Menggunakan Pembolehubah dalam Go Struct Tag
Dalam Go, teg struct digunakan untuk menentukan metadata tentang medan dalam struct. Walaupun mungkin untuk mentakrifkan teg menggunakan literal rentetan, percubaan untuk menggunakan pembolehubah menggantikannya mengakibatkan ralat.
Penggunaan Tidak Sah:
const ( TYPE = "type" ) type Shape struct { Type string fmt.Sprintf("json:\"%s\"", TYPE) }
Kod ini akan membuang ralat sintaks, kerana ia cuba menggunakan pernyataan fmt.Sprintf untuk menjana nilai teg secara dinamik. Go memerlukan teg struct menjadi literal rentetan masa kompilasi.
Penggunaan Sah:
type Shape struct { Type string `json:"type"` }
Dalam contoh ini, teg ditakrifkan sebagai literal rentetan. Ini ialah cara yang betul untuk menentukan teg struct.
Penjelasan:
Perbezaan utama antara contoh yang sah dan tidak sah terletak pada masa penilaian. Literal rentetan dinilai pada masa penyusunan, manakala pernyataan fmt.Sprintf menilai pada masa jalan. Teg struktur digunakan oleh pelbagai alat Go, seperti pengekod dan penyahkod JSON, semasa penyusunan. Alat ini memerlukan nilai teg untuk diketahui pada masa penyusunan untuk menjana kod yang diperlukan dengan betul.
Atas ialah kandungan terperinci Mengapakah Saya Tidak Boleh Menggunakan Pembolehubah dalam Go Struct Tag?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!