Ubuntu下Go語言開發環境的安裝
- 環境
- 步驟一 安裝
- 步驟二 創建作業空間
- 步驟三 設定環境變數
- 創建Hello world!
- 安裝必要的插件
- 安裝Git
- 安裝 go 的一些工具
- 下載源代碼到本地
- 安裝工具包
- 安裝與運行hello world
- 安裝與運行go tour
- 我的第一個包與測驗
- 測驗
- 問題小結
- 相關鏈接
環境
VMware 15.0
Ubuntu 18.04
步驟一 安裝
使用系統包管理工具安裝,這里可能會出現一些例外情況,按照系統提示來就好了,
sudo apt-get install golang
測驗安裝是否成功并查看版本
go version

步驟二 創建作業空間
Go代碼必須放在作業空間內,它其實就是一個目錄,其中包含三個子目錄:
- src 目錄包含Go的源檔案,它們被組織成包(每個目錄都對應一個包)
- pkg 目錄包含包物件
- bin 目錄包含可執行命令
因此,我們需要創建一個作業空間目錄,并為其設定相應的 GOPATH,作業空間可以放在任何地方,這里將其放置在了home目錄下,
kangze@kangze:/$ mkdir $HOME/kangze/gopath
接下來,在這目錄下建立三個子目錄src pkg bin
mkdir src pkg bin
步驟三 設定環境變數
export GOPATH=$HOME/kangze/gopath
export PATH=$PATH:$GOPATH/bin
執行該配置:
source ~/.bashrc
檢查配置
$ go env

可以看到,現在GOPATH已經被修改,
創建Hello world!
創建好作業空間并且設定完環境變數后,按照慣例,學習一門語言,通常都由Hello World開始,為了,完成這一具有劃時代意義的作業,我們先創建一個源代碼目錄,
$ mkdir $GOPATH/src/gihub.com/gitee-user/hello -p
使用vscode創建hello.go(vscode可以在Ubuntu的應用中心中下載)

在源代碼目錄下創建一個hello.go的檔案,在里面撰寫如下代碼,
package main
import "fmt"
func main() {
fmt.Printf("Hello World!\n")
}
運行:
$ go run hello.go

安裝必要的插件
安裝Git
sudo apt-get install git
安裝 go 的一些工具
參考鏈接https://github.com/northbright/Notes/blob/master/Golang/china/get-golang-packages-on-golang-org-in-china.md.
下載源代碼到本地
由于目前在中國網路環境下無法訪問Golang.org,所以不同通過運行
go get golang.org/x/tools/...
來獲取Golang packages,
因此,可以使用github上的鏡像來獲取代碼,先在GOPATH目錄下創建一個子目錄
mkdir -p $GOPATH/src/golang.org/x/
下載原始碼
go get -d github.com/golang/tools
將tools移動到第一步創建的目錄下
cp $GOPATH/src/github.com/golang/tools $GOPATH/src/golang.org/x/ -rf
安裝工具包
go install golang.org/x/tools/go/buildutil
關閉vscode,重新打開,按照提示安裝,

安裝與運行hello world
執行如下命令
go install github.com/github-user/hello
該命令會產生一個二進制檔案并將該二進制檔案安裝到bin目錄下,輸入hello即可運行,

安裝與運行go tour
參考https://github.com/Go-zh/tour.
go get github.com/Go-zh/tour/gotour
gotour
運行結果如下:

我的第一個包與測驗
要撰寫一個庫,并用程式來使用它,首先選擇包路徑并創建包目錄:
mkdir $GOPATH/src/github.com/github-user/stringutil
接著,在該目錄中創建名為 reverse.go 的檔案,內容如下:
// stringutil 包含有用于處理字串的工具函式,
package stringutil
// Reverse 將其實參字串以符文為單位左右反轉,
func Reverse(s string) string {
r := []rune(s)
for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
r[i], r[j] = r[j], r[i]
}
return string(r)
}
現在用 go build 命令來測驗該包的編譯:
$ go build github.com/github-user/stringutil

確認 stringutil 包構建完畢后,修改原來的 hello.go 檔案(它位于 $GOPATH/src/github.com/github-user/hello)去使用它:
package main
import (
"fmt"
"github.com/github-user/stringutil"
)
func main() {
fmt.Printf(stringutil.Reverse("!oG ,olleH"))
}
通過
go install github.com/github-user/hello
來安裝stringutil包,
運行此程式的新版本,
hello

測驗
Go擁有一個輕量級的測驗框架,它由 go test 命令和 testing 包構成,
你可以通過創建一個名字以 _test.go 結尾的,包含名為 TestXXX 且簽名為 func (t *testing.T) 函式的檔案來撰寫測驗, 測驗框架會運行每一個這樣的函式;若該函式呼叫了像 t.Error 或 t.Fail 這樣表示失敗的函式,此測驗即表示失敗,
我們可通過創建檔案 $GOPATH/src/github.com/github-user/stringutil/reverse_test.go 來為 stringutil 添加測驗,其內容如下:
package stringutil
import "testing"
func TestReverse(t *testing.T) {
cases := []struct {
in, want string
}{
{"Hello, world", "dlrow ,olleH"},
{"Hello, 世界", "界世 ,olleH"},
{"", ""},
}
for _, c := range cases {
got := Reverse(c.in)
if got != c.want {
t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)
}
}
}
接著使用go test運行該測驗
go test github.com/github-user/stringutil

問題小結
在剛開始做的時候,在創建作業空間,由于配置環境變數的時候少寫了一個路徑,
(錯誤)export GOPATH=$home/gopath
(正確)export GOPATH=$home/kangze/gopath
導致后續操作失敗,
相關鏈接
https://go-zh.org/doc/code.html.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/97142.html
標籤:其他
下一篇:【原生js】好玩的瀑布流
