編寫 Hello World
創(chuàng)建文件 hello.go,不寫入任何內(nèi)容。按照如下的命令嘗試進(jìn)行編譯
$ go run hello.go
將會(huì)打印出如下錯(cuò)誤:
package main:
hello.go:1:1: expected 'package', found 'EOF'
在Go語言中,所有文件必須隸屬于某一個(gè)包。當(dāng)前,只需要理解在文件的頭部聲明一個(gè)package name就可以了,其中package為關(guān)鍵字,name為你自己起的一個(gè)包名字。
在大型的程序中,包可以很好的有條理的組織各種功能。
例如,如果你想寫一個(gè)關(guān)于交通工具的虛擬模型,你應(yīng)該把所有屬于car的模型放入一個(gè)叫做cars的包中,把所有屬于bus的模型放入buses的包中。
組織相關(guān)的功能只是包的一種用途。
現(xiàn)在讓我們在剛剛創(chuàng)建的hello.go文件中添加一條語句,之后重新執(zhí)行運(yùn)行命令
內(nèi)容:
package main
執(zhí)行后,會(huì)打印如下錯(cuò)誤:
runtime.main_main·f: relocation target main.main not defined
runtime.main_main·f: undefined: "main.main"
Go程序啟動(dòng)時(shí),需要在文件中有一個(gè)可標(biāo)識入口。就像汽車必須有一把啟動(dòng)點(diǎn)火的鑰匙、電腦需要有一個(gè)開機(jī)鍵,Go程序中需要有一個(gè)main函數(shù)。
在hello.go文件中添加另外一行,并且重試
內(nèi)容:
package main
func main(){}
執(zhí)行命令go run hello.go
程序正確執(zhí)行,但是由于我們沒有做任何其它操作,程序很快就退出了。
到目前為止,我們已經(jīng)創(chuàng)建了自己的第一個(gè)程序。雖然沒啥功能,但是已經(jīng)可以正常運(yùn)行了。
讓我們繼續(xù)添加一行
內(nèi)容:
package main
func main(){
Println("hello world")
}
運(yùn)行,將會(huì)打印如下錯(cuò)誤
./hello.go:4:2: undefined: Println
Println是向屏幕輸入內(nèi)容。執(zhí)行命令之后,編譯器報(bào)未定義。
為什么呢?
這里我們就需要用到包了。像Println這樣的函數(shù)存放在某些包中。然而,當(dāng)前這些包由于我們沒有主動(dòng)引入,但不能使用。如果我們需要使用這些包中的功能,首先需要import它們。
函數(shù)Println和其它讀寫文本和字符的函數(shù),都存放在一個(gè)叫做fmt的包中——formatting的縮寫。
我們再添加幾行代碼:
package main
import "fmt"
func main(){
fmt.Println("hello world")
}
運(yùn)行程序go run hello.go ,輸出如下:
hello world
我們只是在package下面添加了一個(gè)import語句,第一個(gè)Go程序已經(jīng)正常運(yùn)行了。import之后,Println可以通過 包名.的方式進(jìn)行調(diào)用。