1、正常使用
声明:
type UserStruct struct {
Name string
Age int
}
初始化:
user := UserStruct{Name: "Peter", Age: 18}
2、匿名 struct
声明和初始化必须同时完成:
admin := struct {
Account string
Pwd string
}{"admin", "111111"}
3.1、嵌入有名结构
声明:
type Money struct {
Rmb float64
Us float64
}
type UserStruct struct {
Name string
Age int
Money # Money 不仅是结构名称,还是字段名
#也可以
Qian Money # Qian 是字段名,Money 只是结构名
}
初始化:
1)字面值方式初始化:
user := UserStruct{Name: "Peter", Age: 18, Money: Money{101, 102}}
2)单个初始化:
user := UserStruct{Name: "Peter", Age: 18}
user.Money.Rmb = 101
user.Money.Us = 102
3.2、匿名嵌套
声明:
type UserStruct struct {
Name string
Age int
Work struct {
Lev int
Job string
}
}
初始化:不能字面值初始化 Work 字段的值
user := UserStruct{Name: "Peter", Age: 100}
user.Work.Lev = 16
user.Work.Job = "PHP"
4、匿名字段(就是没有字段名)
声明:
type CarStruct struct {
string
float64
}
初始化:
car := CarStruct{"标志308", 10}
注意:beego 里面不支持这种匿名字段的结构体输出 json 或 xml
以下代码只会输出{}
car := CarStruct{"标志308", 10}
this.Data["json"] = &car
this.ServeJSON()
5、不同类型的 struct 不可比较