Rumah > pembangunan bahagian belakang > Golang > Bolehkah Anda Menggunakan Pembolehubah dalam Go Struct Tag?

Bolehkah Anda Menggunakan Pembolehubah dalam Go Struct Tag?

Barbara Streisand
Lepaskan: 2024-11-01 02:58:02
asal
280 orang telah melayarinya

Can You Use Variables in Go Struct Tags?

Membenamkan Pembolehubah dalam Teg Struktur Go

Teg struct Go, selalunya digunakan untuk anotasi dan metadata, biasanya melibatkan literal rentetan yang mudah. Walau bagaimanapun, pengguna mungkin menghadapi situasi di mana nilai dinamik atau dikira dikehendaki dalam teg ini.

Pertimbangkan struktur berikut dengan medan "jenis" beranotasi untuk JSON marshaling:

<code class="go">type Shape struct {
    Type string `json:"type"`
}</code>
Salin selepas log masuk

Pendekatan ini berfungsi dengan sempurna dan terus membenamkan rentetan literal dalam teg. Walau bagaimanapun, seseorang boleh cuba menyuntik pembolehubah ke dalam teg:

<code class="go">const (
    TYPE = "type"
)

type Shape struct {
    Type string fmt.Sprintf("json:\"%s\"", TYPE)
}</code>
Salin selepas log masuk

Pendekatan yang lebih fleksibel ini gagal dengan ralat sintaks disebabkan sifat teg struct Go. Bahasa ini mengehadkan teg struct untuk menyusun literal rentetan masa dan tidak membenarkan ungkapan berasaskan dinamik atau pembolehubah.

Oleh itu, dalam Go, tidak mungkin untuk menggunakan pembolehubah dalam teg struct. Had ini berpunca daripada fakta bahawa tag struct pada asasnya adalah anotasi leksikal yang mesti diketahui dan diproses pada masa penyusunan. Penilaian masa jalan tidak serasi dengan mekanisme ini.

Atas ialah kandungan terperinci Bolehkah Anda 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