一、緒論
1 Go語言介紹
Go 即Golang,是Google公司2009年11月正式對外公開的一門程式設計語言。
Go是靜态強類型語言,是差別于解析型語言的編譯型語言(靜态:類型固定 強類型:不同類型不允許直接運算)。
解析型語言——源代碼是先翻譯為中間代碼,然後由解析器對代碼進行解釋執行。
編譯型語言——源代碼編譯生成機器語言,然後由機器直接執行機器碼即可執行。
2 Go語言特性
- 跨平台的編譯型語言
- 交叉編譯(在win平台可編譯出mac平台的可執行檔案)
- 文法接近C語言
- 管道(channel),切片(slice),并發(routine)
- 有垃圾回收的機制
- 支援面向對象和面向過程的程式設計模式
3 go适合做什麼
- 服務端開發
- 分布式系統,微服務
- 網絡程式設計
- 區塊鍊開發
- 記憶體KV資料庫,例如boltDB、levelDB
- 雲平台
4 下載下傳和安裝
開發環境:
- 官網下載下傳位址為:https://golang.org/dl/。
- 如果打不開可以使用這個位址:https://golang.google.cn/dl/。
IDE:
- GoLand
- vscode
5 配置GOPATH和GOROOT
-
GOPATH:代碼存放路徑,該目錄下有三個檔案夾(如果沒有,要手動建立),
windows和mac預設在使用者名下的go檔案夾(GOPATH="/Users/使用者名/go"),所有代碼必須寫在這個路徑下的src檔案夾下,否則無法編譯,可以手動修改。
-src——源碼(包含第三方的和自己項目的)
-bin——編譯生成的可執行程式
-pkg——編譯時生成的對象檔案
-
GOROOT:go開發工具包的安裝路徑,預設:C:\go
将GOROOT下的bin路徑加入環境變量(預設已處理),這樣任意位置敲 go 都能找到該指令
6 指令介紹
直接在終端中輸入
go help
即可顯示所有的 go 指令以及相應指令功能簡介,主要有下面這些:
- build: 編譯包和依賴
- clean: 移除對象檔案(go clean :删除編譯的可執行檔案)
- doc: 顯示包或者符号的文檔
- env: 列印go的環境資訊
- bug: 啟動錯誤報告
- fix: 運作go tool fix
- fmt: 運作gofmt進行格式化(go fmt :自動将代碼格式)
- generate: 從processing source生成go檔案
- get: 下載下傳并安裝包和依賴(go get github.com/astaxie/beego:下載下傳beego架構)
- install: 編譯并安裝包和依賴(go install 項目名:會将go編譯,并放到bin路徑下)
- list: 列出包
- run: 編譯并運作go程式
- test: 運作測試
- tool: 運作go提供的工具
- version: 顯示go的版本
- vet: 運作go tool vet
6.1 build 和 run 指令
就像其他靜态類型語言一樣,要執行 go 程式,需要先編譯,然後在執行産生的可執行檔案。
go build
指令就是用來編譯 go程式生成可執行檔案的。但并不是是以的 go 程式都可以編譯生成可執行檔案的, 要生成可執行檔案,go程式需要滿足兩個條件:
- 該go程式需要屬于main包
- 在main包中必須還得包含main函數
也就是說go程式的入口就是
main.main
, 即main包下的main函數, 例子(test.go):
編譯hello.go,然後運作可執行程式:
$ go run test.go # 将會生成可執行檔案 test
$ ./test # 運作可執行檔案
Hello, World!
上面就是 go build 的基本用法,另外如果使用 go build 編譯的不是一個可執行程式,而是一個包,那麼将不會生成可執行檔案。
而
go run
指令可以将上面兩步并為一步執行(不會産生中間檔案)。
$ go run test.go
Hello, World!
上面兩個指令都是在開發中非常常用的。
此外 go clean 指令,可以用于将清除産生的可執行程式:
$ go clean # 不加參數,可以删除目前目錄下的所有可執行檔案
$ go clean hello.go # 會删除對應的可執行檔案
6.2 get 指令
這個指令同樣也是很常用的,我們可以使用它來下載下傳并安裝第三方包, 使用方式:
go get src
從指定源上面下載下傳或者更新指定的代碼和依賴,并對他們進行編譯和安裝,例如我們想使用 beego 來開發web應用,我們首先就需要擷取 beego:
go get github.com/astaxie/beego
這條指令将會自動下載下傳安裝 beego 以及它的依賴,然後我們就可以使用下面的方式使用:
package main
import "github.com/astaxie/beego" # 這裡需要使用 src 下的完整路徑
func main() {
beego.Run()
}
7 第一個go程式
// go語言的注釋
/*多行
注釋*/
package main // 聲明包名是main,每一個go檔案都必須屬于某一個包
import "fmt" // 導入内置包
func main() { // func函數關鍵字,定義main函數 類似c語言,編譯型語言需要有入口函數: main包下的main函數
fmt.Println("hello,world!") // 列印函數
}
bulid指令編譯,再執行exe:

或者使用run指令,編譯并執行:
go run 1.go