1. 程式人生 > >服務計算 | 實驗報告-使用Go程式設計

服務計算 | 實驗報告-使用Go程式設計

實驗目的

通過簡單Go包的開發,瞭解如何用go工具來獲取、 構建並安裝Go包及命令的標準方式。

實驗步驟

1.部署go語言開發環境 2.編寫第一個程式 3.編寫一個庫 4.編寫測試 5.遠端包

實驗內容

1.部署go語言開發環境

go 語言開發環境的部署比較簡單,根據老師的教程一步步來即可。主要出現的問題是,由於網路原因,一些依賴工具無法正常安裝,需要進行手動安裝。 我在安裝的過程中,只有golint包一直安裝失敗,最後通過解決vscode中golang外掛依賴安裝失敗問題一文得到解決。

2.編寫第一個程式

首先選擇包路徑,並在工作空間內建立相應的包目錄:

$ mkdir $GOPATH/src/github.com/user/hello

接著,在該目錄中建立名為 hello.go 的檔案,其內容為以下Go程式碼:

package main

import "fmt"

func main() {
	fmt.Printf("Hello, world.\n")
}

用 go 工具構建並安裝此程式:

$ go install github.com/user/hello

若在從包目錄中執行 go install,也可以省略包路徑:

$ cd $GOPATH/src/github.com/user/hello
$ go install

執行:

$ $GOPATH/bin/hello
Hello, world.

實驗結果:

在這裡插入圖片描述

3.編寫一個庫

選擇包路徑並建立包目錄:

$ mkdir $GOPATH/src/github.com/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/user/stringutil

當然,若你在該包的原始碼目錄中,只需執行:

$ go build

修改原來的 hello.go 檔案:

package main

import (
	"fmt"

	"github.com/user/stringutil"
)

func main() {
	fmt.Printf(stringutil.Reverse("!oG ,olleH"))
}

安裝 hello 程式(stringutil 包也會被自動安裝):

$ go install github.com/user/hello

執行:

$ hello
Hello, Go!

實驗結果:

在這裡插入圖片描述

4.編寫測試

建立檔案 $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 test github.com/user/stringutil
ok  	github.com/user/stringutil 0.165s

實驗結果:

在這裡插入圖片描述

5.遠端包

根據匯入路徑的描述來獲取包原始碼:

$ go get github.com/golang/example/hello

執行:

$ $GOPATH/bin/hello
Hello, Go examples!

實驗結果:

在這裡插入圖片描述

實驗心得

通過簡單Go包的開發,我們瞭解瞭如何用go工具來獲取、 構建並安裝Go包,以及命令的標準方式。這次作業比上次簡單許多,老師的教程寫的很好。