Go Hello world
原文源碼等更多內(nèi)容可參見(jiàn):http://blog.hyrscloud.com/topic/index?id=20
準(zhǔn)備一個(gè)main.go文件,敲入如下編碼,
在main.go目錄下,通過(guò)cmd敲入 go run main.go 回車(chē)即可運(yùn)行
package main
?
import "fmt"
?
func main() {
fmt.Println("Hello, World!")
}
Go的保留函數(shù)init和main函數(shù)
多個(gè)文件要使用編譯運(yùn)行 go build
package main
?
import (
"fmt"
_ "golang_mainInit_Src/initmaintest1"
_ "golang_mainInit_Src/initmaintest2"
)
?
/*
1\. main() 與 init() 兩個(gè)函數(shù)在定義時(shí)不能有任何的參數(shù)和返回值,且Go程序會(huì)自動(dòng)調(diào)用欺劳;
2\. init() 可以應(yīng)用于任意包中,且可以重復(fù)定義多個(gè),main()函數(shù)只能用于main包街图,且只能定義一個(gè);
3\. 執(zhí)行順序:
a. 對(duì)于一個(gè)go文件的 init() 調(diào)用順序是從上到下的;
b. 對(duì)于同一個(gè)package中不同文件時(shí)按文件名字符串比較 "從小到大" 順序調(diào)用各文件中的init()函數(shù);
c. 對(duì)于不同的package
- 如果不相互依賴(lài):按照main()包中先import的后調(diào)用的順序調(diào)用其包中的init();
- 如果存在依賴(lài),則先調(diào)用最早被依賴(lài)的package中的init();
d. 最后調(diào)用main()函數(shù),如果init()函數(shù)中使用了Println或者Print呆瞻,這兩個(gè)函數(shù)官方只推薦在測(cè)試環(huán)境中使用台夺。
*/
func main() {
fmt.Println("最后調(diào)用main()函數(shù), Hello, World!")
}
?
func init() {
fmt.Println("對(duì)于一個(gè)go文件的 init() 調(diào)用順序是從上到下的---1")
}
?
func init() {
fmt.Println("對(duì)于一個(gè)go文件的 init() 調(diào)用順序是從上到下的---2")
}
運(yùn)行結(jié)果:
對(duì)于不同的package 如果不相互依賴(lài):按照main()包中先import的后調(diào)用的順序調(diào)用其包中的init(); 如果存在依賴(lài),則先調(diào)用最早被依賴(lài)的package中的init();--1
對(duì)于不同的package 如果不相互依賴(lài):按照main()包中先import的后調(diào)用的順序調(diào)用其包中的init(); 如果存在依賴(lài)痴脾,則先調(diào)用最早被依賴(lài)的package中的init();--2
對(duì)于同一個(gè)package中不同文件時(shí)按文件名字符串比較 "從小到大" 順序調(diào)用各文件中的init()函數(shù)---1
對(duì)于同一個(gè)package中不同文件時(shí)按文件名字符串比較 "從小到大" 順序調(diào)用各文件中的init()函數(shù)---2
對(duì)于一個(gè)go文件的 init() 調(diào)用順序是從上到下的---1
對(duì)于一個(gè)go文件的 init() 調(diào)用順序是從上到下的---2
最后調(diào)用main()函數(shù), Hello, World!