Golang語言教程之hello,world
- 2019 年 11 月 26 日
- 筆記
學習新語言通常從hello,world開始,本文通過hello,world示例程式碼來介紹一下Golang 語言的基礎知識。
package main import "fmt" func main () { fmt.Println("Hello,世界") }
基礎介紹
Go 不同於PHP,它是編譯型的語言,Go的工具鏈將程式的源文件轉變成機器相關的原生二進位指令。 這些工具可以通過單一的go 命令配合其子命令進行使用。 今天主要講兩個子命令: 最簡單的子命令是run ,它將一個或多個以.go 為後綴的源文件進行編譯、鏈接, 然後運行生成的可執行文件。
go run helloworld.go
// 輸出:
Hello,世界
Go 原生地支援Unicode ,所以它可以處理所有國家的語言。 另外一個子命令是build 它可以編譯輸出成一個可復用的二進位程式
go build helloworld.go
這條命令生成了一個叫做helloworld 的二進位程式 它可以不用進行任何其他處理,隨時執行:
./helloworld
// 輸出:
Hello,世界
程式碼講解
Go 程式碼是使用包來組織的,包類似於PHP語言中的模組 一個包由一個或多個.go 源文件組成,放在一個文件夾中,通常該文件夾的名字描述了包的作用 package 包聲明 每一個源文件的開頭都以package 聲明,指明這個文件屬於哪個包 import 導入聲明 後面跟著它導入的其它包的列表,以import 聲明 例子裡面只導入了一個fmt 包,如果導入多個包,有兩種方式: 方式1:
import "fmt" import "os"
方式2:
import ( "fmt" "os" )
Go 的標準庫中有100多個包,每個包中又有許多完成編寫程式時的一些常規任務的函數 特殊的包 – main包 main包比較特殊,它用來定義一個獨立的可執行程式,而不是庫 main包中的main函數也是特殊的,它總是程式開始執行的地方,通常main函數會調用其它包中的函數來做更多的事情 必須精確導入程式需要的包,在缺失導入或者存在不需要的包時,編譯會失敗,這種嚴格的要求可以防止程式中引用不需要的包 程式聲明 然後是一些程式聲明(函數、變數、常量、類型),通常以func、var、const、type 開頭 一般情況下,聲明的順序是隨意的 示例中在import 導入聲明後面,只聲明了一個函數,這個函數只調用了一個其他函數 一個函數的聲明由func 關鍵字、函數名、參數列表(main 函數為空)、返回值列表(可以為空)、函數體(放在大括弧內)組成 Go 和PHP 還有一個不同的地方是,Go 程式碼不需要在語句後面使用分號結尾,除非有多個語句寫在同一行,實際上跟在特定符號後面的換行符被轉換為分號了,所以 在什麼地方換行會影響Go 程式碼的解析
程式碼格式化
Go 對於程式碼的格式化要求非常嚴格。這裡又要講一個go 命令的子命令fmt 它可以格式化指定包里的所有文件或者當前文件夾中的文件 許多編輯器可以配置為每次保存文件時自動運行go fmt 此外推薦一個可以按需管理導入聲明的插入和移除的工具 goimports 它不是標準發布的一部分,可以通過執行下面命令獲取到: go get golang.org/x/tools/cmd/goimports
總結
本文通過helloworld 示常式序,介紹了Go 程式如何運行、Go 程式的組成和一些Go 命令介紹,其中需要特彆強調的是Go 程式碼中package 包聲明,import 導入 聲明、程式聲明的順序必須按照示例程式碼中排列,不可隨意排列。