Go語言 init函數(shù)的具體使用
init函數(shù)
C語言沒有init函數(shù),C語言一般需要自己去寫init,然后在構造函數(shù)中調(diào)用
Go語言自帶init函數(shù),每一個包都可以包含一個或多個init函數(shù)
這個init會在包被引用的時候(import)進行自動調(diào)用。
init函數(shù)演示
init函數(shù)沒有參數(shù),沒有返回值,原型固定如下
一個包中包含多個init時,調(diào)用順序是不確定的。
同一個包中多個文件都可以有init函數(shù)。
創(chuàng)建減法函數(shù)包
創(chuàng)建test文件夾。
創(chuàng)建減法文件
在test文件夾中創(chuàng)建sub文件夾,在其中創(chuàng)建sub.go。
示例如下:
package sub
import "fmt"
// init函數(shù)沒有參數(shù),沒有返回值,原型固定如下
// 一個包中包含多個init時,調(diào)用順序是不確定的
func init() {
fmt.Println("這個是 package sub 中的第一個 init()")
}
func init() {
fmt.Println("這個是 package sub 中的第二個 init()")
}
func Sub(a, b int) int {
return a - b
}創(chuàng)建入口文件調(diào)用
在test文件夾中創(chuàng)建main.go引入并調(diào)用減法函數(shù)。
示例如下:
package main
import (
"fmt"
"test/sub"
)
func main() {
res2 := sub.Sub(10, 6)
fmt.Println("10-6=", res2)
}運行結果:
這個是 package sub 中的第一個 init()
這個是 package sub 中的第二個 init()
10-6= 4
創(chuàng)建減法同級函數(shù)
在減法函數(shù)文件創(chuàng)建同命名空間函數(shù)文件sub2,并在減法函數(shù)中調(diào)用。
在go語言中,同一層級目錄,不允許出現(xiàn)多個包名。
由于Sub2 test2與sub.go在同一個包下面,所以可以使用,并且不需要sub.形式。
示例如下:
package sub
import "fmt"
func Sub2() {
fmt.Println("Sub2 func")
}
func test2() {
fmt.Println("test func")
}運行結果:
這個是 package sub 中的第一個 init()
這個是 package sub 中的第二個 init()
Sub2 func
test func
10-6= 4
_形式
init函數(shù)時不允許用戶顯式調(diào)用的。
有的時候引用一個包,可能只想使用這個包里面的init函數(shù)(mysq1iinit對驅(qū)動進行初始化)
但是不想引用包中的其他函數(shù),為了防止編譯器出錯,可以使用_形式來處理。
示例如下:
package main
import (
//"fmt"
_ "test/sub" // 此時只會調(diào)用sub里的init函數(shù),編譯還不會報錯。
)
func main() {
//res2 := sub.Sub(10, 6)
//fmt.Println("10-6=", res2)
}運行結果:
這個是 package sub 中的第一個 init()
這個是 package sub 中的第二個 init()
總結
到此這篇關于Go語言 init函數(shù)的具體使用的文章就介紹到這了,更多相關Go語言 init函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Golang實現(xiàn)IP地址轉整數(shù)的方法詳解
在 Go 語言中,將 IP 地址轉換為整數(shù)涉及到解析 IP 地址并處理其字節(jié)表示,本文給大家介紹了Golang實現(xiàn)IP地址轉整數(shù)的方法,文中有詳細的代碼示例供大家參考,需要的朋友可以參考下2024-02-02
Go語言通過chan進行數(shù)據(jù)傳遞的方法詳解
這篇文章主要為大家詳細介紹了Go語言如何通過chan進行數(shù)據(jù)傳遞的功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下2023-06-06

