Git yapıcılar
Bir yapı var ve bu bazı mantıklı varsayılan değerler ile başlatılmalı istiyorum.
Tipik olarak, burada yapılması gereken şey bir oluşturucu kullanın ama beri geleneksel anlamda gerçekten OOP bu gerçek nesneleri değil, değil gitmek ve kurucular vardır.
Init yöntemi fark var ama bu paket düzeyinde. Yapı düzeyinde kullanılan benzer başka bir şey var mı?
Gidip bu tip şeyler için kabul edilen en iyi uygulama nedir?
CEVAP
Kurucular bazı karşılıkları var.
Böyle bir yapı var diyelim :
type Thing struct {
Name string
Num int
}
sıfır değerleri uygun değilse, daha sonra genellikle bir işaretçi döndürmek: NewThing
fonksiyonu ile bir örnek oluşturmak
func NewThing(someParameter string) *Thing {
p := new(Thing)
p.Name = someParameter
p.Num = 33 // <- a very sensible default value
return p
}
Yapı yeteri kadar basit, tercih edilen ilk jnml cevabı içinde belirtildiği gibi) daha az yapmak için ayrıntılı bu yoğun inşa kullanarak
func NewThing(someParameter string) *Thing {
return &Thing{someParameter, 33}
}
Eğer bir işaretçi dönmek istemezsin eğer doğru değilse, o zaman bu uygulama fonksiyonu NewThing
yerine makeThing
aramak için :
func makeThing(name string) Thing {
return Thing{name, 33}
}
Referans : Allocation with new in Effective Go.
Git yapıcılar...