だけでなく、我々は、彼らが実際にあることがわかります...彼らは同じ結果の値を与えるが、我々は両方の方法何かを割り当て、それらの値を見れば...
// Adapted from http://tour.golang.org/#30
package main
import "fmt"
type Vertex struct {
X, Y int
}
func main() {
v := &Vertex{}
v2 := new(Vertex)
fmt.Printf("%p %p", v, v2)
}
ん連続したメモリスロットに割り当てられます。典型的な出力:0x10328100 0x10328108
。これが実装の詳細か仕様の一部かどうかはわかりませんが、どちらも同じプールから割り当てられていることを示しています。
Play around with the code here.
the language specによると、新に初期化するよう
:外出先での関数がオーバーロードすることはできませんのでThe built-in function new takes a type T and returns a value of type *T. The memory [pointed to] is initialized as described in the section on initial values.
、これは可変引数関数ではありませんが、任意の初期化データを渡す方法はありません。代わりに、goはタイプと任意のメンバーフィールドに適切なバージョンの0
のバージョンを使用して初期化します。
新しいフィールドを使用してフィールドを初期化する方法はありますか? – allyourcode
@allyourcodeはそうは思わない。 http://stackoverflow.com/questions/4498998/how-to-initialize-members-in-go-struct – Woot4Moo
ドキュメントでは、なぜnew関数をインクルードすることにしたのですか?私は 'go'は重複していない機能に関するものだと考えました。 –