Go语言通过 结构体struct 和 接口interface 来实现 面向对象编程oop 的。
结构体的成员可以是任何类型,如
普通类型、复合类型、函数、map、interface、struct等。
成员的首字母大写,则为公有成员,对外可见;
首字母小写,则为私有成员,对外不可见。
声明与初始化:
var stu1 Student //值形式
var stu2 *Student=&Student{} //形式创建
//可简写成:stu2:=&Student{}
var stu3 *Student=new(Student) //new函数创建
//可简写成:stu3:=new(Student)
struct是我们自定义的类型,不能和其他类型进行强制转换。
struct没有构造函数,但是我们可以自己定义 ”构造函数“
tag可以为结构体的成员添加说明或者标签,
可通过反射Marshal与Unmarshal来获取数据。
结构体的匿名成员,没有名称。
同一种类型匿名成员只允许最多存在一个。
继承:当结构体中的成员也是结构体式,则该结构就继承了其成员的这个结构体,并继承了其所有的方法和属性。而有多个结构体成员的时候就是多继承。
访问问题:当继承存在时,访问父结构中属性时可以用".",但是当子结构和父结构都存在相同字段的时候,对于相同的字段,只能使用:“子结构.父结构.字段”来访问父结构中的属性。
方法不可以重载,即对于一个类型只能有一个给名称的方法;
但基于接收者类型,是可以重载的。
结构体中的方法:
原文:https://www.cnblogs.com/xiaohan0712/p/15213183.html