首頁 > 後端開發 > Golang > 為什麼結構體欄位顯示為空?

為什麼結構體欄位顯示為空?

PHPz
發布: 2024-02-09 10:54:07
轉載
773 人瀏覽過

為什麼結構體欄位顯示為空?

php小編新一為你解答為什麼結構體欄位顯示為空。在程式設計中,結構體是一種自訂的資料類型,用於儲存不同類型的資料。當結構體欄位顯示為空時,可能是因為未正確初始化結構體或未給予欄位賦值。另外,也可能是由於字段的作用域問題或結構體定義的錯誤。要解決這個問題,可以檢查程式碼中的初始化部分,確保正確地賦予欄位值。同時,檢查結構體的定義和作用域,確保其能夠正確存取到欄位的值。

問題內容

我正在努力從以下程式碼中獲得正確的輸出:

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)
}
登入後複製

遊樂場片段

列印時結構體欄位為空。我確信某個地方有一個愚蠢的錯誤,但我對 Go 仍然是新手,而且我已經在這個問題上停留了幾個小時了。請幫忙。

解決方法

這個問題已經出現過很多次了。問題是只有導出的欄位可以被封送/取消封送。

匯出以大寫字母開頭的結構體欄位。

type Animal2 struct {
    Name string
    Spec string
    Id   uint32
}
登入後複製

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"`
}
登入後複製

以上是為什麼結構體欄位顯示為空?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板