1、go中定义新类型的两种方法
(1)使用结构体关键字struct,例:
type user struct {
name string
email string
ext int
}
// 注意:定义结构体时各字段之间不用加逗号,定义结构体的变量时
lisa := user{
name: "Lisa",
email: "lisa@email.com",
ext: 123,
}
// 注意:每个字段的结尾要加逗号(包括最后一个字段)
tom := user{"Tom", "tom@email.com", 123}
// 注意:该种定义变量的方式要求字段的顺序与结构体定义时保持一致,最后一个字段不加逗号
(2) 基于一个已有的类型,将其作为新类型的类型说明
type Duration int64
func main() {
var dur Duration
dur1 := 1000 // 对
dur2 := int64(1000) // 错,Duration和int64不是同种类型,编译器不会对不同类型进行隐式转换,不过现在有的版本已经可以
}
2、在结构体中使用其他结构体作为字段
type admin struct {
person user
level string
}
lisa := admin {
person : user{name: "Lisa",
email: "lisa@email.com",
ext: 123,
},
level: "super",
}
//注意:admin的定义中,person字段名可加可不加,不加是,字段名就是user