你有一个带参数的函数,一个指向类型的指针.
type bar struct{...}
func foo(arg *bar)
Run Code Online (Sandbox Code Playgroud)
之间有什么区别:
var b bar
foo(&b)
Run Code Online (Sandbox Code Playgroud)
和
b := new(bar)
foo(b)
Run Code Online (Sandbox Code Playgroud)
使用new会创建一个分配.
两者都应该表示指向使用相同默认值初始化的相同对象的相同指针。
该规范确实提到:
后
type T struct { i int; f float64; next *T }
t := new(T)
Run Code Online (Sandbox Code Playgroud)
以下内容成立:
t.i == 0
t.f == 0.0
t.next == nil
Run Code Online (Sandbox Code Playgroud)
之后也是如此
var t T
Run Code Online (Sandbox Code Playgroud)
还:
获取复合文字的地址(§地址运算符)会生成一个指向文字值的唯一实例的指针。
var pointer *Point3D = &Point3D{y: 1000}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1939 次 |
| 最近记录: |