其他分享
首页 > 其他分享> > 9.10Go之结构体之构造函数

9.10Go之结构体之构造函数

作者:互联网

9.10Go之结构体之构造函数

构造函数的特点

多种方式创建和初始化结构体——模拟构造函数重载

本质:

示例代码:

需求:

package main

/*
创建一个猫的结构体
*/
type Cat struct {
Color string
Name string
}

/*
实例化猫的名字的函数
*/
func NewCatName(name string) *Cat {
//返回值中构造结构体实例
return &Cat{
Name: name,
}
}

/*
实例化猫的颜色的函数
*/
func NewCatColor(color string) *Cat {
return &Cat{
Color: color,
}
}

带有父子关系的结构体的构造和初始化——模拟父级构造调用

本质:

示例代码:

需求:

package main

/*
创建一个猫的基类
*/
type AnotherCat struct {
Color string
Name string
}

/*
创建一个黑猫的子类,内嵌基类
定义 BlackCat 结构,并嵌入了 Cat 结构体,BlackCat 拥有 Cat 的所有成员,实例化后可以自由访问 Cat 的所有成员。
*/
type BlackCat struct {
AnotherCat
}

/*
创建一个构造基类的函数
*/
func NewCat(color string) *AnotherCat {
//返回时实例化基类
return &AnotherCat{
Color: color,
}
}

/*
创建一个构造子类的函数
NewBlackCat() 使用 color 作为参数,构造返回 BlackCat 指针
*/
func NewBlackCat(name string) *BlackCat {
//返回时实例化子类并且初始化黑猫子类的成员
Bcat := &BlackCat{}
   /*
   实例化 BlackCat 结构,此时 Cat 也同时被实例化
   --->实例化子类结构体基类结构体同时被实例化
   类似于面向对象中的“派生”,实例化时,BlackCat 中的 Cat 也会一并被实例化
   */
Bcat.Name = "Luci"
Bcat.Color = "Red"
//返回构造实例的子类实例
return Bcat
}

小结:

Go语言中没有提供构造函数相关的特殊机制,用户根据自己的需求,将参数使用函数传递到结构体构造参数中即可完成构造函数的任务

标签:string,BlackCat,Cat,体之,实例,Go,构造函数,结构
来源: https://www.cnblogs.com/JunkingBoy/p/15252884.html