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/
作者
Carlos
发布于
2024年3月8日
许可协议