Go語言init函式詳解

2022-09-29 13:42:11 字數 1292 閱讀 3084

go init函式詳解

init()函式會在每個包完成初始化後自動執行,並且執行優先順序比main函式高。init 函式通常被用來:

包的初始化

為了使用匯入的包,首先必須將其初始化。初始化總是以單執行緒執行,並且按照包的依賴關係順序執行。hleufd這通過golang的執行時系統控制,如下圖所示:

initial.go

package main

import "fmt"

var _ int64=s()

func init()

func s() int64

func main()

執行結果

function s() --->

init function --->

main --->

即使包被匯入多次,初始化只需要一次。

特性init函式不需要傳入引數,也不會返回任何值。與main相比而言,init沒有被宣告,因此也不能被引用。

package main

import "fmt"

func init()hleufd

func main()

在編譯上面的函式時,會出錯「undefined:init」。

每個原始檔中可以包含多個init函式hleufd,記得《the way to go》中寫的是每個原始檔只能包含乙個init函式,這有點出入,所以下面驗證下。www.cppcns.com

package main

import "fmt"

func init()

func init()

func main()

/*執行結果:

init1

init2

mainwww.cppcns.com */

從上面的例子中,可以看出每個原始檔可以包含多個init函式。

init函式常用的乙個例子就是用來設定初始表示式的值。

var precomputed=[20]float64{}

func init(){

var current float64=1

precomputed[0]=current

for i:=1;i

因為上面**中不可能用for迴圈來作為precomputed的值(這是一句宣告),因此可以用init函式來解決這個問題。

go包匯入規則的***

go要求非常嚴格,不允許引用不使用的包。但是有時你引用包只是為了呼叫init函式去做一些初始化工作。此時空識別符號(也就是下劃線)的作用就是為了解決這個問題。

import _ "image/png"

總結

go語言的init函式

go語言中init函式用於包 package 的初始化,該函式是go語言的乙個重要特性,有下面的特徵 下面演示乙個檔案中可以有多個init函式,執行順序是從上往下執行。aaa.go package core import fmt func init func init func show 下面是co...

Go語言之函式使用 6 init函式

每乙個原始檔都可以包含乙個init函式,該函式會在main函式執行前,被go執行框架呼叫,也就是說init會在main函式前被呼叫。package main import fmt 每乙個原始檔都可以包含乙個init函式,該函式會在main函式執行前,被go執行框架呼叫,也就是說init會在main函...

go語言基礎之init函式的介紹

1 init函式的介紹 示例 資料夾目錄如下 源 vi main.go 程式入口 package main 必須 import calc fmt 2 再執行這個init列印 func init func main vi src calc.go package calc import fmt 1 先執...