golang基础-结构体tag、匿名字段

前端之家收集整理的这篇文章主要介绍了golang基础-结构体tag、匿名字段前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

struct中的tag

我们可以为struct中的每个字段,写上一个tag。这个tag可以通过反射的
机制获取到,最常用的场景就是json序列化和反序列化

package main

import "fmt"
import "encoding/json"

type student struct {
    Name string `json:"stu_name"`
    Age int
}

func main() {
    var stu student = student{
        Name:"safly",Age:10,}

    data,err := json.Marshal(stu)

    if err != nil{
        fmt.Println("json encode stu Failed",err)
        return
    }

    fmt.Println(string(data))


}

输出如下:

PS E:\golang\go_pro\src\safly> go run demo.go
{"stu_name":"safly","Age":10}
PS E:\golang\go_pro\src\safly>

匿名字段

package main

import (
    "fmt"
)


type student struct {
    name string 
    age int
}

type stu struct{
    student
    int
}

func main() {
    var stu1 stu
    stu1.name = "saly"
    stu1.age =10
    stu1.int = 100

    fmt.Println(stu1)
    fmt.Println("---------------------")

    var stu2 stu
    stu2.name = "salyyy"
    stu2.age =100
    stu2.int = 1000
    //都设置age name时候,就看自己的
    stu2.student.name = "ss"
    stu2.student.age = 11
    fmt.Println(stu2)

}

输出如下:

PS E:\golang\go_pro\src\safly> go run demo.go {{saly 10} 100} --------------------- {{ss 11} 1000} PS E:\golang\go_pro\src\safly>

猜你在找的Go相关文章