在Go对象上打印嵌套字段

sd2nnvve  于 2022-12-07  发布在  Go
关注(0)|答案(2)|浏览(172)

我试着从下面的代码中理解,我怎样才能只打印“种类”和“宽度”键值。

package main

import (
    "encoding/json"
    "fmt"
)

type Dimensions struct {
    Height int
    Width  int
}

type Bird struct {
    Species     string
    Description string
    Dimensions  Dimensions
}

func main() {
    birdJson := `{"species":"pigeon","description":"likes to perch on rocks", "dimensions":{"height":24,"width":10}}`
    var bird Bird
    json.Unmarshal([]byte(birdJson), &bird)
    fmt.Println(bird)
    // {pigeon likes to perch on rocks {24 10}}
}

我期望的输出是:鸽子和10只

2lpgd968

2lpgd9681#

您在这里所做的是打印整个对象,而您应该打印您要寻找的特定字段。相反,您应该尝试下列动作:

fmt.Println(bird.Species, bird.Dimensions.Width)

这将产生:
鸽子10
为了使它更容易阅读,可以像这样使用fmt.Printf

fmt.Printf("Species: %s, Width: %d\n", bird.Species, bird.Dimensions.Width)

其将产生:
种类:鸽子,宽度:10

dw1jzc5e

dw1jzc5e2#

您可以在不需要打印的结构上放置一个json标记,如json: "-"

相关问题