go 语言的 new 在什么场景算是“最佳实践”,感觉这个内置存在感好低,都可以被删掉了。

20 天前
 SGL
大部分常见,都可以被 var + &给解决。这个 new 是用来解决什么问题的,其最初的场景是什么。
2934 次点击
所在节点    Go 编程语言
12 条回复
maggch97
20 天前
var + & 你看来很正常,但是十多年前写 C/C++的人应该会非常不习惯这么写
maggch97
20 天前
wuhunyu
20 天前
只能 new(T)了吧,还有其它用法吗
strobber16
20 天前
不是最初场景,但是我写泛型的时候会用到
·func IsZero[T comparable](a T) bool {
return a == *new(T)
}
·
FrankAdler
20 天前
var 出来的指针型是 nil ,mew 的是零值
这种问题随便找个 ai 问下就行了:go 的 new 关键字 有什么不可替代的场景
Miranquil
20 天前
@FrankAdler 确切的说是 new 出来的是一个指向目标类型零值的指针。
wangritian
20 天前
@FrankAdler 楼主提到的&就是为了覆盖你说的场景
lovelylain
20 天前
new(T)场景也能被 var+&代替,只是能省一行代码。
nativeBoy
20 天前
@wuhunyu #3 还有`T{}`
gigishy
20 天前
作为明示内存分配且并不赋值是个很不错的好习惯,一目了然。
kevinxzhao
20 天前
好像没有什么是必须这样写的。
dobelee
20 天前
new 我经常用,用来强调变量是零值。不重要的变量才用&,比如 resp 。
var 很少用,除非强调数据类型,比如 bool 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1140715

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX