实际使用中,如果需要*T
类型,一般&T{}
,很少能想起来用 new
1
aababc 77 天前
完蛋,我都是 new
|
2
hwdq0012 77 天前
*(T*)0
|
![]() |
3
totoro52 77 天前
其实我也好奇,这个 new 是干嘛的
|
4
unused 77 天前
*int 呢
|
5
bunny189 77 天前
我经常用 new
|
![]() |
6
kdwnil 77 天前
我混用的,想起哪个就用哪个,除非有人告诉我那个项目一定要用其中一种
|
![]() |
7
KaynW 77 天前
我觉得 Go 最不常使用的关键字是 fallthrough
|
![]() |
8
Desdemor 76 天前
创建空结构体我都是用的 new 啊
|
![]() |
9
whahuzhihao 76 天前
依赖 ide 检查类是否实现了接口会用到
var _ XXXInterface = new(XXXImpl)。 比&XXXimpl{}看起来舒服点 |
![]() |
10
bv 76 天前
|
11
Jzdoxc 76 天前
@whahuzhihao 我们都是这样用的, var _ xxinterface = (*XXXimpl)(nil)
|
12
zzhaolei 71 天前
我一直都是 var xx *structType ,从来没用过 new 。。。var 的更清晰
|
13
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) 这个用法就不是很明确,虽然编译器会优化这个检查,实际上并不分配内存,但是需要一层理解。当然写多了也都知道。 |