Sadece aynı çıkan değer vermek, ama biz ...
// 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)
}
bir şey her iki yönde tahsis ve değerleri bakarsak ... biz onlar aslında olduğunu görürsünüz ardışık bellek yuvalarına ayrılmıştır. Tipik çıktı: 0x10328100 0x10328108
. Bunun bir uygulama detayı veya belirtimin bir parçası olup olmadığından emin değilim, ancak her ikisinin de aynı havuzdan ayrıldığını gösteriyor.
Play around with the code here.
the language spec göre, yeni ile başlatılıyor gelince
: seferde fonksiyonları aşırı olamaz çünkü 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.
ve bu variadic işlev değil, herhangi bir başlatma verilerindeki geçmesine imkan yok. Bunun yerine, gidip, 0
'un hangi türüyle uygunsa, herhangi bir üye alanı ve türü için anlam ifade eder.
Yeni alanlar kullanarak alanları başlatmanın bir yolu var mı? – allyourcode
@allyourcode bunu düşünmeyin. http://stackoverflow.com/questions/4498998/how-to-initialize-members-in-go-struct – Woot4Moo
Belgeler o zaman, neden 'yeni' işlevini dahil etmeyi seçtiklerini söylüyor mu? Ben her şey örtüşen işlevsellik ile ilgili olduğunu düşündüm .. –