七叶笔记 » golang编程 » golang2021面向对象(39)指针类型匿名字段

golang2021面向对象(39)指针类型匿名字段

结构体(类)中的匿名字段的类型,也可以是指针。

例如:

输出结果:

输出了结构体的地址。如果要取值,可以进行如下操作:

在定义对象s时,完成初始化,然后通过”.”的操作完成成员的操作。

但是,注意以下的写法是错误的:

大家可以思考一下,以上代码为什么会出错?

会出错,错误信息如下:

invalid memory address or nil pointer dereference

翻译成中文:无效的内存地址或nil指针引用

意思是*Person没有指向任何的内存地址,那么其默认值为nil.

也就是指针类型匿名字段*Person没有指向任何一个结构体,所以对象s也就无法操作Person中的成员。

 

具体的解决办法如下:

new( )的作用是分配空间,new(
)函数的参数是一个类型,这里为Person结构体类型,返回值为指针类型,所以赋值给*Person,

这样*Person也就指向了结构体Person的内存

相关文章