例一:
//创建结构体
type Person struct {
name string
}
//构造函数
func (per Person)test1() {
per.name = "tom"
}
//构造函数
func (per *Person)test2() {
per.name = "jack"
}
func main() {
//实例化person结构体
p1 := Person{"xiaoming"}
p2 := &Person{"xiaoming"}
//调用构造函数
p1.test1()
p2.test2()
//输出结果
fmt.Println(p1)
fmt.Println(*p2)
}
返回:
{xiaoming}
{jack}
例二:
//定义结构体
type Person struct {
name string
}
//构造函数
func (p *Person) test1(name string) *Person {
return &Person{ name}
}
func main() {
//创建person实例
p := &Person{"lisi"}
//创建临时变量引用person类型
var per *Person
//创建临时参数并赋值
t1 := "zhnagsan"
//per调用test1方法 ,接收t1的值,传递给t(实际上就是把t1的值传到构造函数中)
t := per.test3(t1)
//person实例p调用test1方法,接收t.name的值
p.test1(t.name)
//输出结果,完成将值通过构造函数传值给结构体实例,以达到参数引用过程中不被改变
fmt.Println(*t)
}
返回:
{zhnagsan}
go 通过构造函数传值给结构体实例
于 2022-05-27 17:25:52 首次发布