編組與私人領域結合
作為一名優秀的開發人員,你已使用匯出和未匯出的欄位建立了以下結構:
type MyStruct struct {
uuid string
Name string
}
遊樂場中的示例: https : //play.golang.org/p/Zk94Il2ANZ
現在,你希望將此結構轉換為有效的 JSON,以便儲存在 etcd 之類的內容中。但是,由於 uuid
沒有匯出,json.Marshal()
會跳過它。該怎麼辦?使用匿名結構和 json.MarshalJSON()
介面! 這是一個例子:
type MyStruct struct {
uuid string
Name string
}
func (m MyStruct) MarshalJSON() ([]byte, error {
j, err := json.Marshal(struct {
Uuid string
Name string
}{
Uuid: m.uuid,
Name: m.Name,
})
if err != nil {
return nil, err
}
return j, nil
}
遊樂場中的示例: https : //play.golang.org/p/Bv2k9GgbzE