Go語言保留了兩個特殊用途的函數(shù),這些函數(shù)是main()和init()函數(shù)。
在Go語言中,main包是一個特殊的軟件包,與可執(zhí)行程序一起使用,并且該package包含main()函數(shù)。在main()函數(shù)是一種特殊類型的函數(shù),它是可執(zhí)行程序的入口點(diǎn)。它不帶任何參數(shù)也不返回任何內(nèi)容。由于可以自動調(diào)用main()函數(shù),因此無需顯式調(diào)用main()函數(shù),并且每個可執(zhí)行程序必須包含一個package main和main()函數(shù)。
//主包的聲明 package main //導(dǎo)入包 import ( "fmt" "sort" "strings" "time" ) func main() { //對切片進(jìn)行排序 s := []int{345, 78, 123, 10, 76, 2, 567, 5} sort.Ints(s) fmt.Println("排序后的切片: ", s) // 查找索引值 fmt.Println("索引值為: ", strings.Index("nhooo", "ks")) //顯示當(dāng)前時間戳 fmt.Println("時間戳: ", time.Now().Unix()) }
輸出:
排序后的切片: [2 5 10 76 78 123 345 567] 索引值為: -1 時間戳: 1593335332
init()函數(shù)就像main函數(shù)一樣,不帶任何參數(shù)也不返回任何東西。 每個包中都存在此函數(shù),并且在初始化包時將調(diào)用此函數(shù)。 該函數(shù)是隱式聲明的,因此您不能從任何地方引用它,并且可以在同一程序中創(chuàng)建多個init()函數(shù),并且它們將按照創(chuàng)建順序執(zhí)行。 您可以在程序中的任何位置創(chuàng)建init()函數(shù),并且它們以詞匯文件名順序(字母順序)調(diào)用。 并允許在init()函數(shù)中放置語句,但始終記住要在main()函數(shù)調(diào)用之前執(zhí)行init()函數(shù),因此它不依賴于main()函數(shù)。 init()函數(shù)的主要目的是初始化無法在全局上下文中初始化的全局變量。
package main import "fmt" //多個init()函數(shù) func init() { fmt.Println("Welcome to init() function") } func init() { fmt.Println("Hello! init() function") } func main() { fmt.Println("Welcome to main() function") }
輸出:
Welcome to init() function Hello! init() function Welcome to main() function