本文是「vangoleo的Go語言學習筆記」系列文章之一。 官網: http://www.vangoleo.com/go/go-hello-world/golang
在上一篇文章你好,Go語言中,咱們對Go語言的歷史和特色有了認識。接下來,咱們就正式進入Go的學習了。 按照大部分編程語言的慣例,咱們以經典的「Hello World」開始Go語言的學習之旅。編程
經典的「Hello World」案例來自於1978年出版的C語言聖經<The C Programming Language>。很巧合的是該書的做者Brian W. Kernighan也是《Go語言聖經》一書的做者。瀏覽器
本教程中,我會使用最方便的方式Golang Playground來體驗Go語言。在瀏覽器中打開https://play.golang.org,在頁面直接編寫Go代碼,並運行。使用Golang Playground無需安裝Go,無需配置Golang的開發環境(好比環境變量),無需安裝文本編輯器或IDE。編程語言
大部分的Hello World教程都會從如何安裝Go,配置環境變量等開始。可是Go語言的安裝和開發環境配置實際上是一個比較複雜的話題。我但願在你們剛接觸Go語言時,能對go語言有一個快速,直觀的認識。而不要陷入如何配置Go的開發環境。配置Go的開發環境涉及到Go語言的另外兩個概念:GOPATH和Go module。而這又會牽扯到Go語言混亂、悠久的依賴管理髮展史。後續會有專門的章節來進行介紹。編輯器
第一步:打開https://play.golang.org,在編輯框中輸入Hello World程序:函數
package main import "fmt" func main() { fmt.Println("Hello world") }
以下圖所示: 第二步:點擊「Run」按鈕,能夠看到程序的輸出結果「Hello,world」。 恭喜你,已經編寫了第一個Go程序,並正確地輸出告終果。工具
雖然Hello World程序很簡單,可是依然包含了Go語言的一些核心概念。接下來,咱們就一行一行地解讀Hello World程序。學習
第一行:package main
程序的第一行聲明瞭名爲main的package。Go語言的代碼是經過package來組織的,package的概念和其餘語言裏的package,module概念相似,是一個邏輯的,包含了相同功能代碼的集合。一個package會包含一個或多個.go
源代碼文件。每個源文件都是以package開頭。好比咱們的例子裏是package main。這行聲明語句表示該文件是屬於哪個package。code
須要注意,package main是一個比較特殊的package。main package是Go程序的入口。準確說,Go程序的入口是名爲main的package中的main方法(即例子中的main方法)。blog
第二行: import
package聲明語句後緊跟着是import語句。import語句會引入其餘package到當前文件中,這樣就能夠在當前文件使用其餘package中的變量,常量,類型,方法等。Go的import和Java的import,C++的include相似。 Go標準庫已經提供了100多個package,fmt
這個package包含接受輸入,格式化輸出的各類函數。Println
是其中的一個經常使用函數,能夠格式化地輸出一段文本。
第三行: func main
第三行聲明瞭一個函數,函數名爲main。在Go語言中使用func
關鍵字來聲明一個函數。格式爲:
func 函數名(參數名1 參數類型1, 參數名2 參數類型2, ... ) 返回類型1, 返回類型2, ...
好比下面的方法:
func sayHello(name string, age int) string
聲明瞭一個sayHello方法。接收兩個參數:string類型的name和int類型的age。並返回一個string類型的值。 前面也提到了,在main這個package裏,main函數也是一個特殊的函數,這是整個程序的入口(其實C系語言差很少都是這樣)。
第四行: fmt.Println
第四行是程序真正執行的邏輯,會輸出「Hello world」。fmt是經過import引入的包,是go標準庫提供的包。Println是fmt包中定義的一個方法,做用是將文本輸出到標準輸出。
經過Hello world,咱們能夠發現Go語言的一些特色:
還有一些Go的特色,因爲Hello world程序比較簡單,沒有體現出來。這裏也順帶說一下:
var name string
。這和C系語言,Java語言都不一樣。gofmt
工具會將你的代碼格式化爲標準格式(這個格式化工具沒有任何能夠調整代碼格式的參數,Go語言就是這麼任性),規定一種標準的代碼格式能夠規避掉無盡的無心義的聖戰(撕逼)(也致使了Go語言的TIOBE排名較低,由於缺乏撕逼的話題)。Go的這種哲學能夠保證當一個大團隊一塊兒開發和維護一個項目時,團隊間的協做更加地標準,高效。本文由 www.vangoleo.com 發佈