SORU
16 Temmuz 2014, ÇARŞAMBA


Ne zaman init() işlevi (golang) çalıştırmak?

init() işlevi gidip ne yaptığına dair kesin bir açıklama (golang) bulmaya çalıştım. effective go söylediklerini okudum ama ne dediğini tam olarak anladım eğer ben emin değildi. Emin değilim tam cümle şudur:

Ve nihayet sonunda demek: başlatma paketinde tüm değişken bildirimi kendi başlatıcılar değerlendirmesi sonunda denir, ve o tüm ithal paketleri başlatıldıktan sonra değerlendirilir.

all the variable declarations in the package have evaluated their initializers ne anlama geliyor? Demek eğer bildirmek "global" değişkenler paket ve dosyaları, ınit() çalışmayacak kadar hepsini değerlendirilir ve sonra Çalıştır tüm ınit fonksiyonu ve daha sonra main (). /main_file_name koştu.

Ben de Mark Summerfield gidip kitabı aşağıdaki bilgileri okuyun:

Eğer bir paket, bir veya daha fazla ınit() otomatik olarak ana paketi daha önce yürütülen fonksiyonlar main() fonksiyonu denir.

Benim anlayışıma göre init() niyetinde ana çalıştırmak için çalıştırdığınızda, sadece ilgili() değil mi? ya da Ana paketi. Herkes init() beni düzeltmek için çekinmeyin daha doğrusu anlıyor

CEVAP
16 Temmuz 2014, ÇARŞAMBA


Evet this varsayarsak:

var WhatIsThe = AnswerToLife()

func AnswerToLife() int {
    return 42
}

func init() {
    WhatIsThe = 0
}

func main() {
    if WhatIsThe == 0 {
        fmt.Println("It's all a lie.")
    }
}

AnswerToLife() init() çağrılmadan önce çalıştırmak için garanti edilir, ve init() main() çağrılmadan önce çalıştırmak için garanti edilir.

init() hep denir ki, ne olursa olsun, eğer ana varsa orada ya da değil akılda tutmak, eğer init bir fonksiyonu olan bir paket alırsanız, çalıştırılacaktır.

//Düzenle

Ayrıca, paket başına init() birden fazla işlevi olabilir, sırayla idam edilecekler unutmayın onlar kodu tüm değişkenler elbette başlatıldıktan sonra ().

//2x . Düzenle

İç Gidip bir sürü başlatmak tablolar init() görüldüğü gibi, örneğin https://github.com/golang/go/blob/883bc6/src/compress/bzip2/bzip2.go#L480 paketler

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bogdan Gabriel

    Bogdan Gabri

    5 Aralık 2006
  • Joseph Hayhoe

    Joseph Hayho

    20 Mayıs 2010
  • Shantanu Sood

    Shantanu Soo

    3 Kasım 2008