卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章34657本站已运行393

为什么结构体字段显示为空?

为什么结构体字段显示为空?

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("%+vn", 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"`
}
卓越飞翔博客
上一篇: 替换字符串中的最后一个字符
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏