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>