Ubuntu 18.04.4
實驗環境搭建
本實驗在 VirtualBox 中建立作業系統為 Ubuntu 18.04.4 的虛擬機器器作為後續實驗的環境。其中,映象下載可轉至清華大學開源軟體映象站。
安裝 VSCode
參見在linux系統中安裝VSCode(Visual Studio Code)。
安裝 golang
存取 Go官方映象站下載 Linux 版本的golang。
# 這一步需要切換為超級使用者進行
# tar xzvf 下載路徑/go1.15.1.linux-amd64.tar.gz -C 指定解壓路徑
sudo tar xzvf /home/sherry/Downloads/go1.15.1.linux-amd64.tar.gz -C /usr/local
mkdir $HOME/gowork
export GOPATH=$HOME/gowork
export PATH=$PATH:$GOPATH/bin
source $HOME/.profile
# mkdir $GOPATH/src/github.com/user_name/hello -p
mkdir $GOPATH/src/github.com/sherryjw/hello -p
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
sudo apt-get install git
檢查 git 安裝情況,可通過檢視 git 版本:
安裝 go 的相關工具
由於無法直接存取 golang.org,因此需要通過使用 github 上的映象來安裝,步驟如下:
①. 下載原始碼到本地:
注:該步驟若按照課程主頁進行可能出錯。
mkdir $GOPATH/src/golang.org/x -p
cd $GOPATH/src/golang.org/x
git clone https://github.com/golang/tools.git
②. 安裝工具包:
go install $GOPATH/src/golang.org/x/tools/go/buildutil
③. 退出 VSCode 再進入,按提示安裝;在 VSCode 中執行 hello.go:
④. 檢視 go 當前工作空間的目錄結構,應該和官方檔案如何使用Go程式設計的工作空間一致:
⑤. 安裝執行 hello world:
go install github.com/github-user/hello
hello
注:該步驟若按照課程主頁進行可能出錯。
設定代理:
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
獲取 https://tour.golang.org/ 的離線版本:
go get golang.org/x/tour
此時獲取的 tour 包被放在 $GOPATH/pkg/mod/golang.org/x 目錄下,需要將其轉移到 $GOPATH/src/golang.org/x 目錄下,並更名為 tour:
cp $GOPATH/pkg/mod/golang.org/x/tour@v0.0.0-20200508155540-0608babe047d $GOPATH/src/golang.org/x/tour -rf
執行:
tour
控制檯自動開啟瀏覽器:
現在可以離線存取 Go Tour 了!
mkdir $GOPATH/src/github.com/user/stringutil
在該目錄中建立名為 reverse.go 的檔案,內容如下:
用 go build 命令來測試該包的編譯:
go build github.com/user/stringutil
確認 stringutil 包構建完畢後,修改原來的 hello.go 檔案,參照自定義的包:
安裝 hello 程式,此時 stringutil 包也會被自動安裝:
go install github.com/user/hello
可以通過建立檔案 $GOPATH/src/github.com/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 語言開發的環境和簡單的入門使用,其中遇到的問題有:
下載 go tools 原始碼時出現以下情況:
暫時未找到該問題的原因,因此選擇直接從對應的 github 庫下載:
安裝 gotour 失敗:
按照課程網站的步驟執行 gotour 時出現以下問題:
根據部落格服務計算-CentOS下安裝Go開發環境遇到的一些問題所述可能是 github 上的倉庫不再維護,而裡面提到的 bitbucket 同樣也 404 了,而本人又沒有梯子,該步驟一度無法進行。
後來查閱到Go 技巧分享:Go 國內加速映象、Go 技巧分享:本地安裝 A tour of Go(含中文),設定了國內代理才解決該問題。事實上在安裝 go tools 時嘗試過設定代理,但彼時還沒有弄清楚具體做法,因此採用了其他方式。
golang安裝指南(中文版)
從零開始搭建Go語言開發環境
一鍵解決 go get golang.org/x 包失敗
服務計算-CentOS下安裝Go開發環境遇到的一些問題