在go語言中,init()方法用於套件的初始化;初始化每個套件後,會自動執行init()函數,並且執行優先權高於主函數的執行優先權。 init()方法通常用於:1、變數初始化;2、檢查/修復狀態;3、註冊器;4、運行計算。 init()函數在程式運行時,自動自動被呼叫執行,不能在程式碼中主動呼叫它。不同包的init函數依照包導入的依賴關係決定該初始化函數的執行順序。
本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。
Go init函數的詳細說明
#go語言中init函數用於套件(package)的初始化,該函數是go語言的一個重要特性
程式執行時導入包語句會自動觸發包內部init()函數的呼叫。
初始化每個套件後,會自動執行init()函數,並且執行優先權高於主函數的執行優先權。
要注意的是:init()函數沒有參數,也沒有回傳值。
init函數通常用於:
- 變數初始化
- 檢查/修復狀態
- 註冊器
#執行計算
init()函數在程式運行時,自動自動被呼叫執行,不能在程式碼中主動呼叫它。
套件初始化執行的順序如下圖所示:
結果是:
10 Hello 沙河
init()函數有下面的特點:
init函數是用來執行前做套件的初始化的函數,例如初始化套件裡的變數等
每個套件可以擁有多個init函數
套件的每個原始檔案也可以擁有多個init函數
同一個套件中多個init函數的執行順序go語言沒有明確的定義(說明)
不同套件的init函數按照套件導入的依賴關係決定該初始化函數的執行順序
init函數不能被其他函數調用,而是在main函數執行之前,自動被調用
#套件初始化
- ##為了使用導入的程式包,必須先對其進行初始化。初始化始終在單一執行緒中執行,並且以程式包依賴關係的順序執行。這由Golang的運行時系統控制,如下圖所示:
- 初始化導入的包(遞歸導入)
計算並為區塊中聲明的變數分配初始值
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 --->") }執行結果
function s() —> init function —> main —>即使套件被多次導入,初始化也只需要一次。 特性介紹
package main import "fmt" func init(){ fmt.Println("init") } func main(){ init() }編譯上述函數「
undefined:init
」時發生錯誤。 每個原始檔案可以包含一個以上的init函數,請記住,寫在每個原始檔案中的「行進方式」只能包含一個init函數,這有點不同,因此進行下一個驗證。package main import "fmt" func init(){ fmt.Println("init 1") } func init(){ fmt.Println("init2") } func main(){ fmt.Println("main") } /* 实施结果: init1 init2 main */從上面的範例中,您可以看到每個來源檔案可以包含多個init函數。
初始化函數的一個常見範例是設定初始表達式的值。 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
}
}
因為不可能在上面的程式碼(這是一條語句)中將for迴圈用作預先計算的值,所以可以使用init函數來解決此問題。
#Go非常嚴格,不允許引用未使用的軟體包。但是有時您引用套件只是為了呼叫init函數進行一些初始化。空標識符(即下劃線)的目的是解決此問題。
import _ "image/png"【相關推薦:###Go影片教學###、###程式設計教學###】###
以上是go語言的init()方法有什麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Golang在实际应用中表现出色,以简洁、高效和并发性著称。1)通过Goroutines和Channels实现并发编程,2)利用接口和多态编写灵活代码,3)使用net/http包简化网络编程,4)构建高效并发爬虫,5)通过工具和最佳实践进行调试和优化。

Go語言的核心特性包括垃圾回收、靜態鏈接和並發支持。 1.Go語言的並發模型通過goroutine和channel實現高效並發編程。 2.接口和多態性通過實現接口方法,使得不同類型可以統一處理。 3.基本用法展示了函數定義和調用的高效性。 4.高級用法中,切片提供了動態調整大小的強大功能。 5.常見錯誤如競態條件可以通過gotest-race檢測並解決。 6.性能優化通過sync.Pool重用對象,減少垃圾回收壓力。

Go語言在構建高效且可擴展的系統中表現出色,其優勢包括:1.高性能:編譯成機器碼,運行速度快;2.並發編程:通過goroutines和channels簡化多任務處理;3.簡潔性:語法簡潔,降低學習和維護成本;4.跨平台:支持跨平台編譯,方便部署。

關於SQL查詢結果排序的疑惑學習SQL的過程中,常常會遇到一些令人困惑的問題。最近,筆者在閱讀《MICK-SQL基礎�...

golang ...

Go語言中如何對比並處理三個結構體在Go語言編程中,有時需要對比兩個結構體的差異,並將這些差異應用到第�...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具