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