Golang 为自定义数据类型的定义提供了结构。 Go 中结构的概念类似于 C/C++ 中的结构。
例子:
type Person struct {
Name string
Aadhar int
Street string
HouseNo int
}
Golang 中的结构可以写入 JSON 等文件,用于将数据存储在硬盘驱动器上或通过网络发送。 JSON 是一种轻量级的数据存储格式。 Go 在标准库中提供了包来将结构写入 JSON 文件并从 JSON 文件中检索结构。
在定义结构的过程中,额外的原始字符串值称为字段标签,可以添加到字段声明中,该声明用作 JSON 文件中的字段名称。如果没有指定额外的字符串值,即字段标记,Go 将使用默认字段名称,该名称用于在结构中声明字段。
带有字段标签的结构定义:
type Person struct {
Name string `json:"name"`
Aadhar int `json: "aadhar"`
Street string `json: "street"`
HouseNo int `json: "house_number"`
}
注意:如果您想在 JSON 中存储结构,字段名称必须以大写字母开头。
// Golang program to show how to use Field
// Tags in the Definition of Struct Type
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"` // field tag for Name
Aadhar int `json:"aadhar"` // field tag for Aadhar
Street string `json:"street"` // field tag for Street
HouseNo int `json:"house_number"` // field tag for HouseNO
}
func main() {
var p Person
p.Name = "ABCD"
p.Aadhar = 1234123412341234
p.Street = "XYZ"
p.HouseNo = 10
fmt.Println(p)
// returns []byte which is p in JSON form.
jsonStr, err := json.Marshal(p)
if err != nil {
fmt.Println(err.Error())
}
fmt.Println(string(jsonStr))
// Sample JSON data
var str = `{
"name" : "PQRX",
"aadhar" : 1234123412341234,
"street" : "XYZW",
"house_number" : 10
}`
var p2 Person
// retains values of fields from JSON string
err = json.Unmarshal([]byte(str), &p2)
// and stores it into p2
if err != nil {
fmt.Println(err.Error())
}
fmt.Println(p2)
}
输出:
{ABCD 1234123412341234 XYZ 10}
{"name":"ABCD","aadhar":1234123412341234,"street":"XYZ","house_number":10}
{PQRX 1234123412341234 XYZW 10}