SORU
8 AĞUSTOS 2013, PERŞEMBE


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
8 AĞUSTOS 2013, PERŞEMBE


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 3dmmfavs

    3dmmfavs

    29 Kasım 2009
  • SoundHound

    SoundHound

    8 Mart 2006
  • wwjoshdu

    wwjoshdu

    18 ŞUBAT 2011

İLGİLİ SORU / CEVAPLAR