你是否还记得有个 new 函数

77 天前
 bli22ard

你是否还记得有个 new 函数

实际使用中,如果需要*T 类型,一般&T{},很少能想起来用 new

3501 次点击
所在节点    Go 编程语言
13 条回复
aababc
77 天前
完蛋,我都是 new
hwdq0012
77 天前
*(T*)0
totoro52
77 天前
其实我也好奇,这个 new 是干嘛的
unused
77 天前
*int 呢
bunny189
77 天前
我经常用 new
kdwnil
77 天前
我混用的,想起哪个就用哪个,除非有人告诉我那个项目一定要用其中一种
KaynW
77 天前
我觉得 Go 最不常使用的关键字是 fallthrough
Desdemor
77 天前
创建空结构体我都是用的 new 啊
whahuzhihao
76 天前
依赖 ide 检查类是否实现了接口会用到
var _ XXXInterface = new(XXXImpl)。 比&XXXimpl{}看起来舒服点
bv
76 天前
Jzdoxc
76 天前
@whahuzhihao 我们都是这样用的, var _ xxinterface = (*XXXimpl)(nil)
zzhaolei
71 天前
我一直都是 var xx *structType ,从来没用过 new 。。。var 的更清晰
zzhaolei
71 天前
@zzhaolei 清晰明确,也更地道。

var b *Struct
b = &Struct{
xxx
}

// 这种我觉得没有 var 的明确,如果 Struct 中有其他的指针,使用 new 是不会给申请对应的内存的,所以没什么大的优点
b := new(Struct)
b.xxx

b = &Struct{
xxxx
}


比如 11 楼说的,var _ xxinterface = (*XXXimpl)(nil) 明确表示了不分配内存,并且是指针,而 9 楼的 var _ XXXInterface = new(XXXImpl) 这个用法就不是很明确,虽然编译器会优化这个检查,实际上并不分配内存,但是需要一层理解。当然写多了也都知道。

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

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

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

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

© 2021 V2EX