分享
golang中new和make的区别
王炎杰 · · 3786 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
最近对golang中new和make函数感到很困惑,为什么golang中有这么两个函数同时都可以声明变量?
下面是上网翻资料查到的一些这两个函数的异同,希望能帮到同样有疑惑的朋友。
- new和make都不是go的关键字,而是go预定义的函数。这意味着我们可以将new或者make重新定义为其他类型。比如:
func delta(new, make int) int { return make - new }
-
make返回一个变量而new返回一个变量的指针。go中new和make的定义如下:
image.png 只有make能做的操作:
a.创建一个chan
b.创建一个内存预分配的map
c.创建一个内存预分配的slice,并且slice的len可以不等于cap
本文作者: 王炎杰
本文链接: https://www.jianshu.com/p/61cd952f322b
版权声明: 转载请注明出处!
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信3786 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
最近对golang中new和make函数感到很困惑,为什么golang中有这么两个函数同时都可以声明变量?
下面是上网翻资料查到的一些这两个函数的异同,希望能帮到同样有疑惑的朋友。
- new和make都不是go的关键字,而是go预定义的函数。这意味着我们可以将new或者make重新定义为其他类型。比如:
func delta(new, make int) int { return make - new }
-
make返回一个变量而new返回一个变量的指针。go中new和make的定义如下:
image.png 只有make能做的操作:
a.创建一个chan
b.创建一个内存预分配的map
c.创建一个内存预分配的slice,并且slice的len可以不等于cap
本文作者: 王炎杰
本文链接: https://www.jianshu.com/p/61cd952f322b
版权声明: 转载请注明出处!