Untuk bermula, Go menggunakan konvensyen sarung untuk membezakan antara pengecam peribadi dan awam dalam pakej. Dalam contoh yang disediakan, medan (m_ip, m_type, dan m_serial) struct Mesin adalah peribadi. Oleh itu, ia tidak boleh diakses oleh perpustakaan luaran seperti json.Marshal di luar pakej yang mana ia ditakrifkan.
Setelah menukar nama medan kepada huruf besar (MachIp, MachType dan MachSerial) dalam coretan kod kedua, mereka menjadi umum dan boleh dieksport. Ini membolehkan json.Marshal berjaya menjana perwakilan JSON.
Walau bagaimanapun, jika anda lebih suka menggunakan nama medan huruf kecil, anda boleh menentukan nama medan JSON yang dikehendaki secara manual dengan menggunakan teg medan. Contohnya:
type Machine struct { MachIp string `json:"m_ip"` MachType string `json:"m_type"` MachSerial string `json:"m_serial"` }
Dengan menganotasi medan dengan tag json, anda pada asasnya mengarahkan pengekod JSON untuk menggunakan nama medan yang ditentukan semasa menjana output JSON.
Atas ialah kandungan terperinci Mengapa `json.Marshal` Go tidak berfungsi dengan Struktur yang Mengandungi Nama Medan Huruf Kecil?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!