Rumah > pembangunan bahagian belakang > Golang > Artikel yang menganalisis fungsi init () dalam Golang

Artikel yang menganalisis fungsi init () dalam Golang

青灯夜游
Lepaskan: 2022-10-26 19:17:36
ke hadapan
3763 orang telah melayarinya

Artikel yang menganalisis fungsi init () dalam Golang

Penerangan terperinci tentang fungsi Go init

Selepas memulakan setiap pakej, fungsi init() akan dilaksanakan secara automatik dan keutamaan pelaksanaan ialah lebih tinggi daripada Keutamaan pelaksanaan fungsi utama. [Cadangan berkaitan: Pergi tutorial video]

Fungsi init biasanya digunakan untuk:

  • Pengamatan pembolehubah
  • Semak/betulkan status
  • Pendaftar
  • Jalankan pengiraan

Pengamalan pakej

Untuk menggunakan pakej yang diimport, ia mesti dimulakan terlebih dahulu . Permulaan sentiasa dilakukan dalam satu utas dan dalam susunan kebergantungan pakej. Ini dikawal oleh sistem masa jalan Golang, seperti yang ditunjukkan di bawah:

  • Mulakan pakej yang diimport (import rekursif)
  • Kira dan tetapkan nilai awal ​​kepada pembolehubah yang diisytiharkan dalam blok
  • Laksanakan fungsi permulaan dalam pakej

initial.go

package main
import "fmt"
var _ int64=s()
func init(){
  fmt.Println("init function --->")
}
func s() int64{
  fmt.Println("function s() --->")
  return 1
}
func main(){
  fmt.Println("main --->")
}
Salin selepas log masuk

Laksanakan Keputusan

fungsi s() —>
fungsi init —>
utama —>

walaupun pakej digunakan beberapa kali Import dan permulaan hanya perlu dilakukan sekali.

Ciri

Fungsi init tidak perlu memasukkan parameter, dan ia juga tidak perlu mengembalikan sebarang nilai. Berbeza dengan main, init tidak diisytiharkan dan oleh itu tidak boleh dirujuk.

package main
import "fmt"
func init(){
  fmt.Println("init")
}
func main(){
  init()
}
Salin selepas log masuk

Ralat berlaku semasa menyusun fungsi "undefined:init" di atas.

Setiap fail sumber boleh mengandungi lebih daripada satu fungsi init, sila ingat bahawa "cara perarakan" yang ditulis dalam setiap fail sumber hanya boleh mengandungi satu fungsi init, ini berbeza sedikit, jadi teruskan ke pengesahan seterusnya .

package main
import "fmt"
func init(){
  fmt.Println("init 1")
}
func init(){
  fmt.Println("init2")
}
func main(){
  fmt.Println("main")
}
/* 实施结果:
init1
init2
main */
Salin selepas log masuk

Daripada contoh di atas, anda boleh melihat bahawa setiap fail sumber boleh mengandungi berbilang fungsi init.

Contoh biasa bagi fungsi permulaan adalah untuk menetapkan nilai ungkapan awal.

var precomputed=[20]float64{}
func init(){
  var current float64=1
  precomputed[0]=current
  for i:=1;i<len(precomputed);i++{
    precomputed[i]=precomputed[i-1]*1.2
  }
}
Salin selepas log masuk

Memandangkan tidak mungkin menggunakan gelung for untuk nilai prakiraan dalam kod di atas (iaitu pernyataan), anda boleh menggunakan fungsi init untuk menyelesaikan masalah ini.

Kesan sampingan peraturan import pakej Go

Go sangat ketat dan tidak membenarkan rujukan kepada pakej yang tidak digunakan. Tetapi kadangkala anda merujuk pakej hanya untuk memanggil fungsi init untuk melakukan beberapa permulaan. Tujuan pengecam kosong (iaitu garis bawah) adalah untuk menyelesaikan masalah ini.

import _ "image/png"
Salin selepas log masuk

Abstrak

Di atas ialah keseluruhan kandungan artikel ini. Saya berharap kandungan artikel ini akan menjadi nilai rujukan kepada kajian atau kerja anda.

Alamat asal: https://developpaper.com/detailed-explanation-of-init-function-in-go-language/

Alamat terjemahan: https://learnku .com/go/t/47178

Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati: Video Pengaturcaraan! !

Atas ialah kandungan terperinci Artikel yang menganalisis fungsi init () dalam Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:learnku.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan