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

Apakah kegunaan kaedah init() dalam bahasa go?

Jan 07, 2023 pm 12:07 PM
golang pergi bahasa init()

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 沙河
Salin selepas log masuk

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 --->")
}
Salin selepas log masuk

Hasil pelaksanaan

function s() —>
init function —>
main —>
Salin selepas log masuk

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

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah masalah dengan thread giliran di crawler colly go? Apakah masalah dengan thread giliran di crawler colly go? Apr 02, 2025 pm 02:09 PM

Masalah Threading Giliran di GO Crawler Colly meneroka masalah menggunakan Perpustakaan Colly Crawler dalam bahasa Go, pemaju sering menghadapi masalah dengan benang dan permintaan beratur. � ...

Perpustakaan apa yang digunakan untuk operasi nombor terapung di GO? Perpustakaan apa yang digunakan untuk operasi nombor terapung di GO? Apr 02, 2025 pm 02:06 PM

Perpustakaan yang digunakan untuk operasi nombor terapung dalam bahasa Go memperkenalkan cara memastikan ketepatannya ...

Di Go, mengapa rentetan percetakan dengan fungsi println dan rentetan () mempunyai kesan yang berbeza? Di Go, mengapa rentetan percetakan dengan fungsi println dan rentetan () mempunyai kesan yang berbeza? Apr 02, 2025 pm 02:03 PM

Perbezaan antara percetakan rentetan dalam bahasa Go: perbezaan kesan menggunakan fungsi println dan rentetan () sedang ...

Bagaimana menyelesaikan masalah penukaran jenis user_id semasa menggunakan aliran redis untuk melaksanakan beratur mesej dalam bahasa Go? Bagaimana menyelesaikan masalah penukaran jenis user_id semasa menggunakan aliran redis untuk melaksanakan beratur mesej dalam bahasa Go? Apr 02, 2025 pm 04:54 PM

Masalah menggunakan redisstream untuk melaksanakan beratur mesej dalam bahasa Go menggunakan bahasa Go dan redis ...

Perpustakaan mana yang dibangunkan oleh syarikat besar atau disediakan oleh projek sumber terbuka yang terkenal? Perpustakaan mana yang dibangunkan oleh syarikat besar atau disediakan oleh projek sumber terbuka yang terkenal? Apr 02, 2025 pm 04:12 PM

Perpustakaan mana yang dibangunkan oleh syarikat besar atau projek sumber terbuka yang terkenal? Semasa pengaturcaraan di GO, pemaju sering menghadapi beberapa keperluan biasa, ...

Apa yang perlu saya lakukan jika label struktur tersuai di Goland tidak dipaparkan? Apa yang perlu saya lakukan jika label struktur tersuai di Goland tidak dipaparkan? Apr 02, 2025 pm 05:09 PM

Apa yang perlu saya lakukan jika label struktur tersuai di Goland tidak dipaparkan? Apabila menggunakan Goland untuk Pembangunan Bahasa GO, banyak pemaju akan menghadapi tag struktur tersuai ...

Tujuan Golang: Membina sistem yang cekap dan berskala Tujuan Golang: Membina sistem yang cekap dan berskala Apr 09, 2025 pm 05:17 PM

Pergi bahasa berfungsi dengan baik dalam membina sistem yang cekap dan berskala. Kelebihannya termasuk: 1. Prestasi Tinggi: Disusun ke dalam Kod Mesin, Kelajuan Berjalan Cepat; 2. Pengaturcaraan serentak: Memudahkan multitasking melalui goroutine dan saluran; 3. Kesederhanaan: sintaks ringkas, mengurangkan kos pembelajaran dan penyelenggaraan; 4. Cross-Platform: Menyokong kompilasi silang platform, penggunaan mudah.

Bagaimana untuk menyelesaikan masalah kekangan jenis fungsi generik Golang yang dipadamkan secara automatik dalam vscode? Bagaimana untuk menyelesaikan masalah kekangan jenis fungsi generik Golang yang dipadamkan secara automatik dalam vscode? Apr 02, 2025 pm 02:15 PM

Penghapusan automatik Golang Generik Jenis Kekangan Jenis dalam Pengguna VSCode mungkin menghadapi masalah yang aneh ketika menulis kod Golang menggunakan vscode. Bila ...

See all articles