首先,Go 使用大小寫約定來區分套件中的私有識別碼和公用識別碼。在提供的範例中,Machine 結構的欄位(m_ip、m_type 和 m_serial)是私有的。因此,它們無法被定義它們的套件外部的外部庫(如 json.Marshal)存取。
在第二個程式碼片段中將欄位名稱變更為大寫(MachIp、MachType 和 MachSerial)時,它們變得公開並可以匯出。這允許 json.Marshal 成功產生 JSON 表示。
但是,如果您喜歡使用小寫欄位名稱,則可以使用欄位標籤手動指定所需的 JSON 欄位名稱。例如:
type Machine struct { MachIp string `json:"m_ip"` MachType string `json:"m_type"` MachSerial string `json:"m_serial"` }
透過使用 json 標籤註解字段,您實際上是指示 JSON 編碼器在產生 JSON 輸出時使用指定的欄位名稱。
以上是為什麼 Go 的 `json.Marshal` 不支援包含小寫欄位名稱的結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!