php小編新一為你解答為什么結(jié)構(gòu)體字段顯示為空。在編程中,結(jié)構(gòu)體是一種自定義的數(shù)據(jù)類型,用于存儲(chǔ)不同類型的數(shù)據(jù)。當(dāng)結(jié)構(gòu)體字段顯示為空時(shí),可能是因?yàn)槲凑_初始化結(jié)構(gòu)體或者未給字段賦值。另外,也可能是由于字段的作用域問(wèn)題或者結(jié)構(gòu)體定義的錯(cuò)誤。要解決這個(gè)問(wèn)題,可以檢查代碼中的初始化部分,確保正確給字段賦值。同時(shí),檢查結(jié)構(gòu)體的定義和作用域,確保其能夠正確訪問(wèn)到字段的值。
問(wèn)題內(nèi)容
我正在努力從以下代碼中獲得正確的輸出:
package main import ( "encoding/json" "fmt" ) func main() { var jsonBlob3 = []byte(`[ {"name": "Platypus", "spec": "Monotremata", "id":25 }, {"name": "Quoll", "spec": "Dasyuromorphia", "id":25 } ]`) type Animal2 struct { name string spec string id uint32 } var animals []Animal2 err := json.Unmarshal(jsonBlob3, &animals) if err != nil { fmt.Println("error:", err) } fmt.Printf("%+v\n", animals) }
登錄后復(fù)制
游樂(lè)場(chǎng)片段
打印時(shí)結(jié)構(gòu)體字段為空。我確信某個(gè)地方有一個(gè)愚蠢的錯(cuò)誤,但我對(duì) Go 仍然是新手,而且我已經(jīng)在這個(gè)問(wèn)題上停留了幾個(gè)小時(shí)了。請(qǐng)幫忙。
解決方法
這個(gè)問(wèn)題已經(jīng)出現(xiàn)過(guò)很多次了。問(wèn)題是只有導(dǎo)出的字段可以被封送/取消封送。
導(dǎo)出以大寫字母開頭的結(jié)構(gòu)體字段。
type Animal2 struct { Name string Spec string Id uint32 }
登錄后復(fù)制
在 Go Playground 上嘗試一下。
請(qǐng)注意,JSON 文本包含小寫文本的字段名稱,但 json
包“聰明”足以匹配它們。如果它們完全不同,您可以使用 struct 標(biāo)簽告訴 json
包如何在 JSON 文本中找到它們(或者如何整理它們),例如:
type Animal2 struct { Name string `json:"json_name"` Spec string `json:"specification"` Id uint32 `json:"some_custom_id"` }
登錄后復(fù)制