5.2. 构造函数¶
Go语言没有构造函数的功能,函数体的初始化可以使用函数封装实现。
5.2.1. 1.多种方式创建和初始化结构体-模拟构造函数重载¶
package main
import "fmt"
type Cat struct {
Color string
Name string
}
func NewCatByName(name string) *Cat {
return &Cat{
Name: name,
}
}
func NewByColor(color string) *Cat {
return &Cat{
Color: color,
}
}
func main() {
name := NewCatByName("元宝")
fmt.Println(name.Name)
color := NewByColor("金黄色")
fmt.Println(color.Color)
}
5.2.2. 2.带有父子关系的结构体的构造和初始化-模拟父级构造调用¶
package main
import "fmt"
type Cat struct {
Name string
Color string
}
type BlackCat struct {
// 嵌入Cat,类似于派生
Cat
}
//构造基类
func NewCat(name string) *Cat {
return &Cat{
Name: name,
}
}
// 构造子类
func NewBlackCat(color string) *BlackCat {
cat := &BlackCat{}
cat.Color = color
return cat
}
func main() {
hu := NewCat("huxiaojian")
fmt.Println(hu.Name)
hu_color := NewBlackCat("白色")
fmt.Println(hu_color.Color)
}