Golang_继承

Golang

文章目录

1 继承

Golang的继承比较简单,因为Golang的继承追求的是简单。不像Java那样复杂。
下面的实例给出了继承的最简单的应用
实例1

package main
import "fmt"
type A struct{
	age int
}
type C struct{
	age int
}
type B struct{
	C
	A
	name string
}
func main(){
	var b B
	b.A.age = 20
	fmt.Println(b.A.age)
	b.C.age = 40
	fmt.Println(b.C.age)
	fmt.Println(b)
}

强调 ·1
如果是多继承的话,那么继承的如果两个父亲都有相同字段的话,那么必须要在输出的时候显示这个父亲的名称。
如果没有相同字段的话那么可以不用显示父亲的名称。

实例2

type Goods struct{
	name string
	price float64
}
type Brands struct{
	name string
	address string
}
type TV struct{
	Goods
	Brands

}
func main(){
	tv := TV{Goods{"电视机",4000},Brands{"海尔","上海"},}
	fmt.Println(tv)
	tv2 :=TV{
		Goods{
			name : "电视机",
			price : 5000,
		},Brands{
			name : "基德",
			address : "北京",
		},
	}
	fmt.Println(tv2)
}

这个实例表示出来了如何在创建变量的时候赋值的情况。
有两种方法。且要注意其中的逗号等细节。

实例3

type Goods struct{
	name string
	price int
}
type Brands struct{
	name string
	address string
}
type TV struct{
	*Goods
	*Brands

}
func main(){
	tv := TV{&Goods{"电视机",5000},&Brands{"戴尔","山东"},}
	fmt.Println(*tv.Goods)
}

传入指针是效率比较传值来说更高的。所有上面的实例我用了传入指针的方法去创建变量且赋值
在Golang的底层有指针的优化,这个要注意。

实例4

type master struct{
	name string 
	age int
}
type A struct{
	//结构体的匿名字段也是基本数据类型
	//但是不可以有两个int的匿名字段
	master
	int

}
func main(){
	//匿名字段的演示
	var a A
	a.int = 50
	a.name = "tom"
	a.age = 50
	fmt.Println(a)
}

上面的实例表示出了匿名字段可以是基本数据类型也可以是结构体,可以是int,float64或者bool型
但是不可以有重复的基本数据类型。不然编译的时候编译器会分不清是哪一个数据类型。

发布了103 篇原创文章 · 获赞 12 · 访问量 6918

猜你喜欢

转载自blog.csdn.net/qq_43141726/article/details/104388770