欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語(yǔ)言 init函數(shù)的具體使用

 更新時(shí)間:2024年09月26日 11:00:09   作者:JSON_L  
init()函數(shù)是Go語(yǔ)言中一種特殊的函數(shù),用于在包被導(dǎo)入時(shí)執(zhí)行一次性的初始化操作,本文就來介紹一下Go語(yǔ)言 init函數(shù)的具體使用,感興趣的可以了解一下

init函數(shù)

C語(yǔ)言沒有init函數(shù),C語(yǔ)言一般需要自己去寫init,然后在構(gòu)造函數(shù)中調(diào)用

Go語(yǔ)言自帶init函數(shù),每一個(gè)包都可以包含一個(gè)或多個(gè)init函數(shù)

這個(gè)init會(huì)在包被引用的時(shí)候(import)進(jìn)行自動(dòng)調(diào)用。

init函數(shù)演示

 init函數(shù)沒有參數(shù),沒有返回值,原型固定如下

一個(gè)包中包含多個(gè)init時(shí),調(diào)用順序是不確定的。

同一個(gè)包中多個(gè)文件都可以有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ù),沒有返回值,原型固定如下
// 一個(gè)包中包含多個(gè)init時(shí),調(diào)用順序是不確定的

func init()  {
   fmt.Println("這個(gè)是 package sub 中的第一個(gè) init()")
}

func init()  {
   fmt.Println("這個(gè)是 package sub 中的第二個(gè) 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)
}

運(yùn)行結(jié)果:

這個(gè)是 package sub 中的第一個(gè) init()
這個(gè)是 package sub 中的第二個(gè) init()
10-6= 4

創(chuàng)建減法同級(jí)函數(shù)

在減法函數(shù)文件創(chuàng)建同命名空間函數(shù)文件sub2,并在減法函數(shù)中調(diào)用。

在go語(yǔ)言中,同一層級(jí)目錄,不允許出現(xiàn)多個(gè)包名。

由于Sub2 test2與sub.go在同一個(gè)包下面,所以可以使用,并且不需要sub.形式。

示例如下:

package sub

import "fmt"

func Sub2()  {
   fmt.Println("Sub2 func")
}

func test2()  {
   fmt.Println("test func")
}

運(yùn)行結(jié)果:

這個(gè)是 package sub 中的第一個(gè) init()
這個(gè)是 package sub 中的第二個(gè) init()
Sub2 func
test func
10-6= 4

_形式

init函數(shù)時(shí)不允許用戶顯式調(diào)用的。

有的時(shí)候引用一個(gè)包,可能只想使用這個(gè)包里面的init函數(shù)(mysq1iinit對(duì)驅(qū)動(dòng)進(jìn)行初始化)

但是不想引用包中的其他函數(shù),為了防止編譯器出錯(cuò),可以使用_形式來處理。

示例如下:

package main

import (
   //"fmt"
   _ "test/sub" // 此時(shí)只會(huì)調(diào)用sub里的init函數(shù),編譯還不會(huì)報(bào)錯(cuò)。
)

func main() {
   //res2 := sub.Sub(10, 6)
   //fmt.Println("10-6=", res2)
}

運(yùn)行結(jié)果:

這個(gè)是 package sub 中的第一個(gè) init()
這個(gè)是 package sub 中的第二個(gè) init()

總結(jié)

到此這篇關(guān)于Go語(yǔ)言 init函數(shù)的具體使用的文章就介紹到這了,更多相關(guān)Go語(yǔ)言 init函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論