在原始语言结构中使用似乎毫无意义,因为您无法指定任何类型的值
func main() {
y := new([]float)
fmt.Printf("Len = %d", len(*y) ) // => Len = 0
}
Run Code Online (Sandbox Code Playgroud)
对于stucts它使一个有点更有意义,但有什么说的区别y := new(my_stuct)和看似更简洁y := &my_struct?
由于您创建的任何内容都基于这些基元,因此它们将初始化为所述零值.那有什么意义呢?你什么时候想用new()?
对于非常初学者的问题感到抱歉,但文档并不总是那么清楚.
您不能new像在代码示例中那样使用切片和贴图,而是必须使用以下make命令:make([]float, 100)
双方new(MyStruct)并&MyStruct{}做同样的事情,因为Go会在堆上,如果你有和得到他们的地址分配的值.有时,代码只是在一种风格或另一种风格中表达它的意图.
Go没有对构造函数的内置支持,因此通常将调用包装new到函数中,例如NewMyStruct(),它执行所有必要的初始化.它还可以初始化私有字段或隐藏接口后面的结构,以防止对象的用户直接搞乱其内部.当您在添加/删除/重命名/重新排序字段时不需要更改其所有用户时,也更容易改进结构的结构.
| 归档时间: |
|
| 查看次数: |
336 次 |
| 最近记录: |