go語言的init()方法有什麼用
在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 */
初始化函數的一個常見範例是設定初始表達式的值。 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
}
}
#Go非常嚴格,不允許引用未使用的軟體包。但是有時您引用套件只是為了呼叫init函數進行一些初始化。空標識符(即下劃線)的目的是解決此問題。
import _ "image/png"
以上是go語言的init()方法有什麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Go語言中用於浮點數運算的庫介紹在Go語言(也稱為Golang)中,進行浮點數的加減乘除運算時,如何確保精度是�...

Go爬蟲Colly中的Queue線程問題探討在使用Go語言的Colly爬蟲庫時,開發者常常會遇到關於線程和請求隊列的問題。 �...

Go語言中使用RedisStream實現消息隊列時類型轉換問題在使用Go語言與Redis...

Go語言中字符串打印的區別:使用Println與string()函數的效果差異在Go...

GoLand中自定義結構體標籤不顯示怎麼辦?在使用GoLand進行Go語言開發時,很多開發者會遇到自定義結構體標籤在�...

Go語言中哪些庫是大公司開發或知名開源項目?在使用Go語言進行編程時,開發者常常會遇到一些常見的需求,�...

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

Go編程中的資源管理:Mysql和Redis的連接與釋放在學習Go編程過程中,如何正確管理資源,特別是與數據庫和緩存�...
