第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang 中的動態(tài) JSON 結(jié)構(gòu)未按預(yù)期運(yùn)行

Golang 中的動態(tài) JSON 結(jié)構(gòu)未按預(yù)期運(yùn)行

Go
拉莫斯之舞 2023-03-21 17:16:09
我正在嘗試創(chuàng)建一個結(jié)構(gòu),其中包含一些始終存在的基本字段和一些本身就是結(jié)構(gòu)的可選字段。我想知道為什么下面的代碼:package mainimport (    "encoding/json"    "fmt"    "time")type DataManagement struct {    DataManagement struct {        Type              string        Asset struct {            LocalAssetUID string            Type          string        }        *ContentProductionOrder        *ContentItem        TimeStamp         time.Time        Hash              string    }}type ContentProductionOrder struct {    ProductionOrderNo int    ItemNo            int    StartDate         time.Time    FinishDate        time.Time    StatusID          int    StatusDate        time.Time    SourceTypeID      int    TrackingID        int}type ContentItem struct {    ItemNo     int    ItemText   string    Quantity   int}func main() {    var contentItem ContentItem    contentItem.ItemNo = 123    contentItem.ItemText = "aaaaaaaa"    contentItem.Quantity = 3    var dataManagement DataManagement    dataManagement.DataManagement.Type = "asd"    dataManagement.DataManagement.Asset.LocalAssetUID = "asd"    dataManagement.DataManagement.Asset.Type = "asd"    dataManagement.DataManagement.ContentItem = &contentItem    dataManagement.DataManagement.TimeStamp = time.Now().UTC()    dataManagement.DataManagement.Hash = "123"    xy, _ := json.MarshalIndent(dataManagement, "", "  ")    fmt.Println(string(xy))    xy, _ = json.MarshalIndent(contentItem, "", "  ")    fmt.Println(string(xy))}輸出如下:{  "DataManagement": {    "Type": "asd",    "Asset": {      "LocalAssetUID": "asd",      "Type": "asd"    },    "ItemText": "aaaaaaaa",    "Quantity": 3,    "TimeStamp": "2009-11-10T23:00:00Z",    "Hash": "123"  }}{  "ItemNo": 123,  "ItemText": "aaaaaaaa",  "Quantity": 3}有任何想法嗎?這可能很容易解釋;我在 Golang 方面沒有那么豐富的經(jīng)驗(yàn)。
查看完整描述

1 回答

?
慕村225694

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個贊

你沒有得到你想要的輸出是因?yàn)槟闶褂昧饲度胧浇Y(jié)構(gòu)而ContentItem不是DataManagement字段名稱來添加到結(jié)構(gòu)中。

使用類型聲明但沒有顯式字段名稱的字段稱為嵌入字段。嵌入字段必須指定為類型名稱 T 或指向非接口類型名稱 *T 的指針,并且 T 本身可能不是指針類型。非限定類型名稱充當(dāng)字段名稱。

現(xiàn)場聲明將解決您的問題。您應(yīng)該將結(jié)構(gòu)更改DataManagement為:

type DataManagement struct {
    DataManagement struct {
        Type  string
        Asset struct {
            LocalAssetUID string
            Type          string
        }
        *ContentProductionOrder // this is embedded struct
        ContentItem *ContentItem
        TimeStamp time.Time
        Hash      string
    }
}

Go Playground上的工作代碼

有關(guān)更多信息,請查看結(jié)構(gòu)類型的 Golang 規(guī)范


查看完整回答
反對 回復(fù) 2023-03-21
  • 1 回答
  • 0 關(guān)注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號