go类(结构体)和对象
实例化
- 结构体实例化对象方式:
- 直接通过结构体名和字段名初始化,返回值类型
- 直接new,返回指针类型
- 对于复杂的类,写一个NewStructname() *Structname函数来实例化,类似于构造函数(工厂模式)
- 先声明结构体变量,再逐个字段赋值
- 直接创建匿名结构体的实例,无需提前定义结构体类型,适用于一次性使用的简单数据
继承
- go里面的继承其实是组合。
type Animal struct { Name string }
type Dog struct {
Animal // 嵌入(继承) Animal 类型
Breed string
}
- 继承方式
- 指针继承
- 值继承
type Animal struct {}
func (a *Animal) Speak() {
fmt.Println("Animal speaks")
}
type Cat struct {
*Animal
}
type Cat struct { // 无法调用Speak方法,因为Speak方法是指针接收者方法
Animal
}