在Go中,以下两段代码之间存在显着差异:
v := &Vector{}
Run Code Online (Sandbox Code Playgroud)
而不是
v := new(Vector)
Run Code Online (Sandbox Code Playgroud) 好吧用文字描述它很难,但是假设我有一个存储int指针的地图,并希望将操作的结果存储为我的哈希中的另一个键:
m := make(map[string]*int)
m["d"] = &(*m["x"] + *m["y"])
Run Code Online (Sandbox Code Playgroud)
这不起作用,并给我错误: cannot take the address of *m["x"] & *m["y"]
思考?
我知道Go没有任何构造函数,并且New func在它的位置使用了a ,但是根据这个例子.
func NewFile(fd int, name string) *File {
if fd < 0 {
return nil
}
f := File{fd, name, nil, 0}
return &f
}
Run Code Online (Sandbox Code Playgroud)
他们总是回来&f.为什么只是回归File是不够的?
更新
我已经尝试将创建的对象返回到一个简单的结构,它很好.所以,我想知道返回地址是否是构造函数的标准方法.
谢谢.