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