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

Artikel yang menganalisis fungsi init () dalam Golang

青灯夜游
青灯夜游ke hadapan
2022-10-26 19:17:363632semak imbas

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 --->")
}

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()
}

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 */

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
  }
}

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"

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!

Kenyataan:
Artikel ini dikembalikan pada:learnku.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam