GoLang struct 使用备忘录

原创 学习 GO
阅读数: 741 2019年06月21日

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 不可比较

phpriji.cn | 网站地图 | 沪ICP备17015433号-1