Mengapakah Saya Tidak Boleh Menggunakan Pembolehubah dalam Go Struct Tag?

Barbara Streisand
Lepaskan: 2024-10-30 11:43:02
asal
383 orang telah melayarinya

Why Can't I Use Variables in Go Struct Tags?

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)
}
Salin selepas log masuk

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"`
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!