类
go语言中的结构体相当于其它语言的类,go语言中没有构造函数的概念,通常以NewXXX来命名,表示“构造函数”:
type Person struct {
Name string
}
func NewPerson(name string) *Person {
return &Person{
Name:name,
}
}
面向对象的特性
go语言放弃大量面向对象特性如继承等,只保留了组合这个最基础的特性。但其实go语言也提供了继承,只是采用组合的文法,名为“匿名组合”:
type Person struct {
Name string
}
func (p *Person)GetGender() string {
return ""
}
type Man struct {
Person
}
//Man 的GetGender方法从Person继承了GetGender方法,并重写了GetGender,加入了 “return "男性"”
func (m *Man)GetGender() string {
m.Person.GetGender() //继承了Person的GetGender方法
return "男性" //重写部分
}