Golang结构体继承
结构体嵌套切片和map
type Person struct {
Name string
Age int
Hobby []string
map1 map[string]string
}
var p Person
p.Name = "张三"
p.Age = 20
p.Hobby = make([]string, 3, 6)
p.Hobby[0] = "xx"
p.Hobby[1] = "yy"
p.map1 = make(map[string]string)
p.map1["address"] = "BJ"
p.map1["phone"] = "13333333333"
fmt.Println(p)
结构体嵌套结构体
type UserInfo struct {
Username string
Password string
Address Address //嵌套
}
type Address struct {
Name string
Phone string
City string
}
var u UserInfo
u.Username = "zs"
u.Password = "123456"
u.Address.Name = "zs"
u.Address.Phone = "111111111"
u.Address.City = "BJ"
fmt.Println(u)
嵌套匿名结构体
type UserInfo struct {
Username string
Password string
Address //嵌套
}
type Address struct {
Name string
Phone string
City string
}
var u UserInfo
u.Username = "zs"
u.Password = "123456"
u.Name = "zs" #第一层找不到会向下找
u.Phone = "111111111"
u.City = "BJ"
fmt.Println(u)
注意:主结构体和子结构体存在相同字段,直接调用该字段修改的是主机构体字段,如果多个子结构体存在相同字段,不能直接调用,需指定子结构体+该字段名,如u.Address.City ,不能写成u.City,否则系统会报错。
结构体继承
在Golang中,可以通过嵌入结构体的方式实现继承的效果。通过在子类中嵌入父类的结构体,子类就可以访问和使用父类的属性和方法。
type Animal struct {
name string
}
func (a *Animal) Eat() {
fmt.Println("Animal is eating")
}
type Dog struct {
Animal
}
d := Dog{
Animal: Animal{
name: "Bobby",
},
}
fmt.Println(d.name) // 输出:Bobby
d.Eat() // 输出:Animal is eating
Golang结构体继承
http://www.jcwit.com/article/4/