php小編新一為你解答為什么結(jié)構(gòu)體字段顯示為空。在編程中,結(jié)構(gòu)體是一種自定義的數(shù)據(jù)類型,用于存儲不同類型的數(shù)據(jù)。當結(jié)構(gòu)體字段顯示為空時,可能是因為未正確初始化結(jié)構(gòu)體或者未給字段賦值。另外,也可能是由于字段的作用域問題或者結(jié)構(gòu)體定義的錯誤。要解決這個問題,可以檢查代碼中的初始化部分,確保正確給字段賦值。同時,檢查結(jié)構(gòu)體的定義和作用域,確保其能夠正確訪問到字段的值。
問題內(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ù)制
游樂場片段
打印時結(jié)構(gòu)體字段為空。我確信某個地方有一個愚蠢的錯誤,但我對 Go 仍然是新手,而且我已經(jīng)在這個問題上停留了幾個小時了。請幫忙。
解決方法
這個問題已經(jīng)出現(xiàn)過很多次了。問題是只有導(dǎo)出的字段可以被封送/取消封送。
導(dǎo)出以大寫字母開頭的結(jié)構(gòu)體字段。
type Animal2 struct {
Name string
Spec string
Id uint32
}
登錄后復(fù)制
在 Go Playground 上嘗試一下。
請注意,JSON 文本包含小寫文本的字段名稱,但 json 包“聰明”足以匹配它們。如果它們完全不同,您可以使用 struct 標簽告訴 json 包如何在 JSON 文本中找到它們(或者如何整理它們),例如:
type Animal2 struct {
Name string `json:"json_name"`
Spec string `json:"specification"`
Id uint32 `json:"some_custom_id"`
}
登錄后復(fù)制






