服務計算-安裝 Golang 開發環境

2020-09-22 18:00:21

實驗:安裝 Golang 開發環境

【實驗環境】

  Ubuntu 18.04.4

【實驗內容】

  安裝 go 語言開發環境

【實驗過程】

  1. 實驗環境搭建
      本實驗在 VirtualBox 中建立作業系統為 Ubuntu 18.04.4 的虛擬機器器作為後續實驗的環境。其中,映象下載可轉至清華大學開源軟體映象站

  2. 安裝 VSCode
      參見在linux系統中安裝VSCode(Visual Studio Code)

  3. 安裝 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
  • 開啟 $HOME/.profile 檔案,在結尾新增以下兩行:
export GOPATH=$HOME/gowork
export PATH=$PATH:$GOPATH/bin
  • 使環境變數設定生效:
source $HOME/.profile
  • 在命令列視窗輸入 「go env」 檢查設定:
      
  1. 編寫第一個 go 程式
  • 建立原始碼目錄
# mkdir $GOPATH/src/github.com/user_name/hello -p
mkdir $GOPATH/src/github.com/sherryjw/hello -p
  • 建立並編寫hello.go:
package main

import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}
  • 執行:
      
  1. 安裝必要的工具和外掛
  • 安裝 Git 使用者端
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

  

  1. 安裝與執行 go tour

  注:該步驟若按照課程主頁進行可能出錯。
  設定代理:

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 了!

  1. 建立第一個自定義的包
  • 建立包目錄:
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
  • 執行:
      
    可以看到自定義的包的實現達到預期效果。
  1. 第一次測試

  可以通過建立檔案 $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 語言開發的環境和簡單的入門使用,其中遇到的問題有:


【參考資料】

  golang安裝指南(中文版)
  從零開始搭建Go語言開發環境
  一鍵解決 go get golang.org/x 包失敗
  服務計算-CentOS下安裝Go開發環境遇到的一些問題