文章目錄
- 為什麼要學習 go
- 開發環境搭建 -- MAC
- 運作第一個go程式
- go 函數的傳回值設定
- go 函數的指令行參數
為什麼要學習 go
在如下幾個應用場景的需求下産生了go:
- 超大規模分布式計算叢集
- 多核硬體的架構
- web模式下的大規模開發和頻繁的進度更新
是以go 語言有如下幾個特點:
- 簡單。 隻有25個關鍵字,相比于C的37個,C++的84個已經是很簡單了
- 高效。編譯型語言,也支援垃圾回收,同時支援指針直接通路記憶體。
- 雲計算語言。docker 和 kubernate 都是通過go語言開發的
- 區塊鍊語言。
對于存儲領域來說,go語言已經實作了很多大規模的高性能和高并發架構,能夠快速高效得完成一個存儲元件的開發。而且最近想要學習MIT 6.824課程過程中的一些很有趣的lab需要使用go來完成,這個過程的學習和提升就很有趣了。
開發環境搭建 – MAC
-
建立本地目并設定環境變量
在home目錄下建立go目錄,go/src目錄,go/pkg/mod目錄,分别作為go path目錄,源代碼目錄,依賴子產品目錄
-
修改~/.bash_profile檔案,增加如下内容:
export GOPATH="$HOME/go"
如果在unix,則預設是export PATH="$PATH:$GOPATH/bin"
;如果是windows ,則預設是$HOME/go
%USERPROFILE%go
-
安裝go
brew install go
// 會直接安裝go 的最新版本 1.14
安裝完成之後 通過
檢視go version
-
安裝golangci-lint
golangci-lint作為代碼靜态檢查工具,後續開發過程中可以使用make lint(makefile中添加)預先檢查代碼中不符合go編碼規範的地方,否則流水線禁止送出,可以提前做到代碼風格的一緻性和可讀性brew install golangci/tap/golangci-lint
-
開發工具安裝
這裡看個人習慣:vscode , goland都是可以的
mac 下的工具安裝:
brew cask install goland
運作第一個go程式
- 之前建立好的源碼路徑
目錄下建立一個ch1目錄,再在該$GOPATH/src
目錄下建立一個以ch1
命名的go檔案hellow_world.go
-
檔案中輸入如下代碼hello_world.go
package main // 表明代碼所在的子產品包,這個是必須聲明的
import "fmt" // 引入代碼依賴
//實作功能
func main() {
fmt.Println("Hello World")
}
- 運作
go run hello_world.go
- 也可以編譯生成二進制檔案
生成的二進制檔案 運作所依賴的庫已經連結好了,這個時候随意移動二進制檔案都是可以運作的。go build hello_world.go
go 函數的傳回值設定
不同與 java/C/C++ 的
return
方式的傳回值,go語言裡需要設定
os.Exit(code int)
即如下代碼
package main // 表明代碼所在的子產品包,這個是必須聲明的
import (
"fmt" // 引入代碼依賴
"os" //引入os 的代碼依賴
)
//實作功能
func main() {
fmt.Println("Hello World")
os.Exit(0) // 設定傳回值
}
go 函數的指令行參數
不同于C/C++/Java的指令行參數傳入 直接通過 main 的參數
char *args[]
來儲存,go 不同的是需要通過相關的依賴來進行傳入。
-
main
函數不支援入參
func main (arg [] string)
- 程式中直接通過
擷取指令行參數os.Args
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("command args: ", os.Args)
if len(os.Args) > 1 { // len是數組求長度的函數
fmt.Println("Hellow world ", os.Args[1])
}
}
運作輸出如下: