本文是「vangoleo的Go語言學習筆記」系列文章之一,
官網: http://www.vangoleo.com/go/go-hello-world/
在上一篇文章你好,Go語言中,我們對Go語言的歷史和特點有了認識,接下來,我們就正式進入Go的學習了,
按照大部分編程語言的慣例,我們以經典的“Hello World”開始Go語言的學習之旅,
經典的“Hello World”案例來自于1978年出版的C語言圣經
,很巧合的是該書的作者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語言混亂、悠久的依賴管理發展史,后續會有專門的章節來進行介紹,
使用Go Playground
第一步:打開https://play.golang.org,在編輯框中輸入Hello World程式:
package main
import "fmt"
func main() {
fmt.Println("Hello world")
}
如下圖所示:

第二步:點擊“Run”按鈕,可以看到程式的輸出結果“Hello,world”,
恭喜你,已經撰寫了第一個Go程式,并正確地輸出了結果,
Go語言特性
雖然Hello World程式很簡單,但是依然包含了Go語言的一些核心概念,接下來,我們就一行一行地解讀Hello World程式,
第一行:package main
程式的第一行宣告了名為main的package,Go語言的代碼是通過package來組織的,package的概念和其他語言里的package,module概念類似,是一個邏輯的,包含了相同功能代碼的集合,一個package會包含一個或多個.go源代碼檔案,每一個源檔案都是以package開頭,比如我們的例子里是package main,這行宣告陳述句表示該檔案是屬于哪一個package,
需要注意,package main是一個比較特殊的package,main package是Go程式的入口,準確說,Go程式的入口是名為main的package中的main方法(即例子中的main方法),
第二行: 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包中定義的一個方法,作用是將文本輸出到標準輸出,
Go語言特點
通過Hello world,我們可以發現Go語言的一些特點:
- 陳述句的結尾不需要分號,這和C系語言,Java等語言不同,
- Go語言不需要顯示宣告方法或變數的作用范圍,即不用顯式宣告public或private,其實Go語言是通過變數或方法名的首字母是大寫還是小寫來確定作用范圍的,大寫字母開頭的為public,小寫字母開頭的為private,
還有一些Go的特點,由于Hello world程式比較簡單,沒有體現出來,這里也順帶說一下:
- Go語言宣告變數和方法引數時,名字在前,型別在后,比如
var name string,這和C系語言,Java語言都不同, - Go語言在代碼格式上采取了很強硬的態度,go提供的
gofmt工具會將你的代碼格式化為標準格式(這個格式化工具沒有任何可以調整代碼格式的引數,Go語言就是這么任性),規定一種標準的代碼格式可以規避掉無盡的無意義的圣戰(撕逼)(也導致了Go語言的TIOBE排名較低,因為缺少撕逼的話題),Go的這種哲學可以保證當一個大團隊一起開發和維護一個專案時,團隊間的協作更加地標準,高效,
本文由 www.vangoleo.com 發布
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/131548.html
標籤:其他
上一篇:在多執行緒下,網路通信時的接識訓沖區由誰提供,由哪個執行緒處理?
下一篇:WAV檔案讀取
