Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah kegunaan kaedah init() dalam bahasa go?

Apakah kegunaan kaedah init() dalam bahasa go?

青灯夜游
青灯夜游asal
2023-01-07 12:07:183758semak imbas

Dalam bahasa Go, kaedah init() digunakan untuk pemulaan pakej selepas memulakan setiap pakej, fungsi init() akan dilaksanakan secara automatik dan keutamaan pelaksanaan lebih tinggi daripada keutamaan pelaksanaan utama; fungsi. Kaedah init() biasanya digunakan untuk: 1. Pengiraan boleh ubah; Fungsi init() dipanggil dan dilaksanakan secara automatik apabila program berjalan, dan ia tidak boleh dipanggil secara aktif dalam kod. Fungsi init bagi pakej yang berbeza menentukan susunan pelaksanaan fungsi permulaan mengikut kebergantungan yang diimport oleh pakej.

Apakah kegunaan kaedah init() dalam bahasa go?

Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.

Penerangan terperinci tentang fungsi Go init

Fungsi init dalam bahasa go digunakan untuk memulakan pakej (pakej). go language Ciri penting

Apabila program dilaksanakan, penyataan pakej import akan secara automatik mencetuskan panggilan fungsi init() di dalam pakej.

Selepas setiap pakej dimulakan, fungsi init() akan dilaksanakan secara automatik, dan keutamaan pelaksanaan adalah lebih tinggi daripada keutamaan pelaksanaan fungsi utama.

Perlu diambil perhatian bahawa fungsi init() tidak mempunyai parameter dan tiada nilai pulangan.

Fungsi init biasanya digunakan untuk:

  • Pengamatan pembolehubah
  • Menyemak/membetulkan status
  • Pendaftar
  • Pengiraan berjalan

Fungsi init() dipanggil dan dilaksanakan secara automatik apabila atur cara berjalan dan ia tidak boleh dipanggil secara aktif dalam kod.

Jujukan pelaksanaan permulaan pakej ditunjukkan dalam rajah di bawah:

Apakah kegunaan kaedah init() dalam bahasa go?

Hasilnya ialah:

10
Hello 沙河

Init( ) fungsi mempunyai Ciri-ciri berikut:

  • Fungsi init digunakan untuk memulakan pakej sebelum pelaksanaan program, seperti memulakan pembolehubah dalam pakej, dll.

  • Setiap pakej A boleh mempunyai berbilang fungsi init

  • Setiap fail sumber pakej juga boleh mempunyai berbilang fungsi init

  • Berbilang init fungsi dalam pakej yang sama Susunan pelaksanaan fungsi init tidak ditakrifkan dengan jelas (penjelasan) dalam bahasa Go

  • Fungsi init bagi pakej yang berbeza menentukan susunan pelaksanaan fungsi permulaan mengikut kebergantungan yang diimport oleh pakej

  • Fungsi init tidak boleh dipanggil oleh fungsi lain, tetapi dipanggil secara automatik sebelum fungsi utama dilaksanakan

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

Apakah kegunaan kaedah init() dalam bahasa go?

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

Hasil pelaksanaan

function s() —>
init function —>
main —>

Walaupun pakej diimport beberapa kali, permulaan hanya perlu dilakukan sekali.

Pengenalan ciri

Fungsi init tidak perlu menghantar 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"

[Cadangan berkaitan: Pergi tutorial video, Pengajaran pengaturcaraan]

Atas ialah kandungan terperinci Apakah kegunaan kaedah init() dalam bahasa go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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