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>
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>
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!