如何在Golang中打印此 struct 的IdTitleName等(到控制台)?

type Project struct {
    Id      int64   `json:"project_id"`
    Title   string  `json:"title"`
    Name    string  `json:"name"`
    Data    Data    `json:"data"`
    Commits Commits `json:"commits"`
}

推荐答案

要打印 struct 中的字段名称,请执行以下操作:

fmt.Printf("%+v\n", yourProject)

fmt package:

打印 struct 时,加号标志(%+v)添加字段名

这假设您有一个Project实例(在‘yourProject’中)

文章JSON and Go将详细介绍如何从JSON struct 中检索值.


Go by example page提供了另一种技术:

type Response2 struct {
  Page   int      `json:"page"`
  Fruits []string `json:"fruits"`
}

res2D := &Response2{
    Page:   1,
    Fruits: []string{"apple", "peach", "pear"}}
res2B, _ := json.Marshal(res2D)
fmt.Println(string(res2B))

这将打印:

{"page":1,"fruits":["apple","peach","pear"]}

如果没有任何实例,则需要100来显示给定 struct 的字段名as in this example.

type T struct {
    A int
    B string
}

t := T{23, "skidoo"}
s := reflect.ValueOf(&t).Elem()
typeOfT := s.Type()

for i := 0; i < s.NumField(); i++ {
    f := s.Field(i)
    fmt.Printf("%d: %s %s = %v\n", i,
        typeOfT.Field(i).Name, f.Type(), f.Interface())
}

Go相关问答推荐

为什么我不能使用Docker从本地访问我的Gin应用程序?

困扰围棋官方巡回赛的S建议所有方法都使用同一类型的接收器

Golang XML密钥名称冲突

允许在 struct 中使用复合作为函数参数

重新赋值变量时未清除动态类型-这是错误吗?

如何创建在responseWriter.Write 上返回错误的http.ResponseWriter 模拟实例?

Go 中的 protobuf FieldMask 解组

无法在go中为docker容器写入有效的挂载路径

Go Template 动态获取变量

使用goroutines在Golang中验证 struct

Golang 中的泛型类型转换

Golang代码判断第一个词是否可以从第二个词形成

golang 中的可变参数函数

如何在切片增长时自动将切片的新元素添加到函数参数

获取切片元素的地址是否意味着 Go 中元素的副本?

我相信我正确地在 sRGB 和线性 RGB 之间进行了转换,那么为什么深色的结果看起来更糟呢?

Golang - 客户 Unmarshaler/Marshaler 在指针上具有 nil/null 值

在我的情况下,如何以正确的方式测试方法?

使用 `didip/tollbooth` 限制每小时最大请求数

不能使用 *T 类型的变量作为参数类型