在 Golang 中读取 JSON 格式的数据需要用到 `encoding/json` 包。该包提供了一组函数和结构体,可以将 JSON 数据解码成 Golang 中的数据类型。以下是一个简单的示例代码:


```go

package main


import (

"encoding/json"

"fmt"

)


type Person struct {

Name string `json:"name"`

Age int `json:"age"`

}


func main() {

data := []byte(`{"name":"John Doe","age":30}`)

var p Person

err := json.Unmarshal(data, &p)

if err != nil {

fmt.Println("error:", err)

}

fmt.Println(p.Name, p.Age) // 输出 John Doe 30

}

```


在上面的代码中,`json.Unmarshal` 函数接受两个参数。第一个参数是包含 JSON 数据的 byte slice,第二个参数是一个指向目标结构体的指针。在本例中,目标结构体是 `Person`。`json.Unmarshal` 函数会自动将 JSON 数据解码成 `Person` 类型的数据,并存储在指向 `Person` 的指针变量 `p` 中。


`Person` 结构体中的 `json` 标记用于指定在 JSON 数据中对应该字段的名称。在本例中,`"name"` 对应 `Name` 字段,`"age"` 对应 `Age` 字段。如果 JSON 数据中没有与结构体中相应字段匹配的名称,则该字段的值将被设置为其类型的零值。


除了 `Unmarshal` 函数外,`encoding/json` 还提供了其他函数和结构体,使得可以对 JSON 数据进行编码、解码和生成。更多用法详见 Golang 官方文档。