结构
-
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来获取数据。
-
结构体的匿名成员,没有名称。
同一种类型匿名成员只允许最多存在一个。
-
继承:当结构体中的成员也是结构体式,则该结构就继承了其成员的这个结构体,并继承了其所有的方法和属性。而有多个结构体成员的时候就是多继承。
-
访问问题:当继承存在时,访问父结构中属性时可以用".",但是当子结构和父结构都存在相同字段的时候,对于相同的字段,只能使用:“子结构.父结构.字段”来访问父结构中的属性。
-
方法不可以重载,即对于一个类型只能有一个给名称的方法;
但基于接收者类型,是可以重载的。
-
结构体中的方法:
- 方法只能被其接收者调用
- 接收者是指针时,方法可以改变接收者的值(或状态)。函数也能做到
- 接收者和方法必须在同一个包内