go的结构体没有构造函数,可以自己实现
//使用结构体描述猫的特性,那么根据颜色和名字可以有不同种类的猫,可以根据颜色和名字构造不同种类猫的实例
type cat struct{
color string
name string
}
func newCat(color,name string) *cat{ //定义构造cat结构体的函数,返回cat指针类型,因为结构体是值类型,如果结构体比较复杂的话,值拷贝性能开销会比较大,所以该构造函数返回的是结构体指针类型
return &cat{ //取结构体地址开始实例化,返回cat指针
color:color,
name:name,
}
}
cat1 := newCat("白色","咪咪") //cat1是指针类型
cat2 := newCat("黄色","局座")
fmt.Printf("cat1类型:%T,cat1值:%v",cat1,*cat1) //cat1类型:*main.cat,cat1值:{白色 咪咪}