golang 内置函数new() 和struct{} 初始化的区别
ebayboy · · 5206 次点击 · · 开始浏览golang 内置函数new() 和struct{} 初始化的区别
happinessaflower·2015年06月17日 20:03:41· 13036 次点击 ·预计阅读时间 1 分钟·大约1分钟之前开始浏览
这是一个创建于2015年06月17日 20:03:41的文章,其中的信息可能已经有所发展或是发生改变。
new()
这是一个用来分配内存的内置函数,它的第一个参数是一个类型,不是一个值,它的返回值是一个指向新分配的 t 类型的零值的指针。
在golang的代码定义如下:
funcnew(tType) *Type
strut{}
直接使用struct{} 来初始化strut时,返回的是一个struct类型的值,而不是指针两者是不一样的
两者对比代码如下:
typeStudentstruct{ idintnamestring}funcmain(){vars_1 *Student =new(Student) s_1.id = 100s_1.name ="cat"vars_2 Student = Student{id:1,name:"tom"} fmt.Println(s_1,s_2)}
输出结果:
&{100 cat} {1 tom}
从上面代码的声明和打印的结果中就可以看出 s_1 的类型为指针,s_2 为一个Student类型
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
golang 内置函数new() 和struct{} 初始化的区别
happinessaflower·2015年06月17日 20:03:41· 13036 次点击 ·预计阅读时间 1 分钟·大约1分钟之前开始浏览
这是一个创建于2015年06月17日 20:03:41的文章,其中的信息可能已经有所发展或是发生改变。
new()
这是一个用来分配内存的内置函数,它的第一个参数是一个类型,不是一个值,它的返回值是一个指向新分配的 t 类型的零值的指针。
在golang的代码定义如下:
funcnew(tType) *Type
strut{}
直接使用struct{} 来初始化strut时,返回的是一个struct类型的值,而不是指针两者是不一样的
两者对比代码如下:
typeStudentstruct{ idintnamestring}funcmain(){vars_1 *Student =new(Student) s_1.id = 100s_1.name ="cat"vars_2 Student = Student{id:1,name:"tom"} fmt.Println(s_1,s_2)}
输出结果:
&{100 cat} {1 tom}
从上面代码的声明和打印的结果中就可以看出 s_1 的类型为指针,s_2 为一个Student类型