Go語言保留了兩個特殊用途的函數(shù),這些函數(shù)是main()和init()函數(shù)。
在Go語言中,main包是一個特殊的軟件包,與可執(zhí)行程序一起使用,并且該package包含main()函數(shù)。在main()函數(shù)是一種特殊類型的函數(shù),它是可執(zhí)行程序的入口點。它不帶任何參數(shù)也不返回任何內(nèi)容。由于可以自動調(diào)用main()函數(shù),因此無需顯式調(diào)用main()函數(shù),并且每個可執(zhí)行程序必須包含一個package main和main()函數(shù)。
//主包的聲明
package main
//導入包
import (
"fmt"
"sort"
"strings"
"time"
)
func main() {
//對切片進行排序
s := []int{345, 78, 123, 10, 76, 2, 567, 5}
sort.Ints(s)
fmt.Println("排序后的切片: ", s)
// 查找索引值
fmt.Println("索引值為: ", strings.Index("nhooo", "ks"))
//顯示當前時間戳
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