Rumah > pembangunan bahagian belakang > Golang > Bilakah Tepat Adakah Fungsi `init()` Go Berjalan?

Bilakah Tepat Adakah Fungsi `init()` Go Berjalan?

Susan Sarandon
Lepaskan: 2024-12-20 22:41:16
asal
240 orang telah melayarinya

When Exactly Does Go's `init()` Function Run?

Bila Adakah Fungsi init() Berjalan?

Fungsi init() ialah fungsi khas dalam Go yang dipanggil sebelum yang utama () fungsi pakej. Ia biasanya digunakan untuk memulakan pembolehubah dan tugas persediaan lain. Tetapi apakah sebenarnya maksud ayat berikut dari Effective Go:

"Dan akhirnya bermaksud akhirnya: init dipanggil selepas semua pengisytiharan pembolehubah dalam pakej telah menilai pemula mereka, dan ia hanya dinilai selepas semua pakej yang diimport telah dimulakan."

Ini bermakna fungsi init() berjalan selepas semua pembolehubah global dalam pakej semasa, serta mana-mana pakej yang diimport, telah dimulakan dengan nilai lalai. Adalah penting untuk ambil perhatian bahawa susunan permulaan adalah berdasarkan susunan leksikal fail pakej, dan bukannya susunan import diisytiharkan.

Sebagai contoh:

var GlobalVar1 = 10

func init() {
    GlobalVar1 = 20
}

func main() {
    // GlobalVar1 is 20
}
Salin selepas log masuk

Dalam contoh ini, fungsi init() dipanggil selepas GlobalVar1 telah dimulakan kepada 10, dan ia mengatasi nilai GlobalVar1 hingga 20 sebelum fungsi main() dipanggil.

Perlu disebut bahawa fungsi init() sentiasa dipanggil, tidak kira sama ada pakej itu mempunyai fungsi main() atau tidak. Ini bermakna jika anda mengimport pakej yang mempunyai fungsi init(), ia akan dilaksanakan sebelum fungsi init() pakej anda sendiri.

Selain itu, pelbagai fungsi init() boleh ditakrifkan dalam satu pakej, dan ia akan dilaksanakan mengikut susunan ia muncul dalam fail sumber. Ini membolehkan anda melaksanakan berbilang tugasan permulaan dalam susunan tertentu.

Atas ialah kandungan terperinci Bilakah Tepat Adakah Fungsi `init()` Go Berjalan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan