一、安裝golang
首先查看系統上有沒有go的版本

若沒有go的版本,通過系統包安裝

檢查是否安裝成功

(vscode后面會用到,同樣可以通過系統庫安裝 sudo apt-get install code,這里不再贅述)
二、創建作業目錄
在home目錄下新建一個目錄gopath(名字可以任意),在該目錄下新建三個子目錄:
-
src – 里面每一個子目錄,就是一個包,包內是Go的原始碼檔案
-
pkg – 編譯后生成的包的目標檔案
-
bin – 生成的可執行檔案,

三、設定環境變數
編輯home目錄下的.bashrc檔案,在末尾添加以下內容:
(home/xumy/是我的home目錄)

運行 source ~/.bashrc,使得以上的配置生效,
運行go env,檢查以上配置是否生效,

四、撰寫第一個go語言程式hello.go
(參考https://go-zh.org/doc/code.html)
源檔案應該放在作業目錄的src檔案夾下,在這下面可以創建自己的包路徑,這里以github.com/github-user/hello為例,這相當于c++中的專案檔案,所有與專案有關的代碼都可以放在這里,
創建包路徑:
mkdir $GOPATH/src/github.com/github-user/hello -p
在該目錄下創建一個名字為hello.go的檔案,檔案內容如下:
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
五、安裝一些go的工具
在vscode中打開.go檔案,它會提示你要安裝一些擴展,但是點擊安裝后會失敗,失敗原因是golang.org這個網站被墻了,導致我們拉取golang.org/x/tools目錄下的內容失敗,

手動安裝
(參照https://github.com/northbright/Notes/blob/master/Golang/china/get-golang-packages-on-golang-org-in-china.md)
首先在$GOPATH目錄下創建子目錄:
mkdir -p $GOPATH/src/golang.org/x/
引數-p的作用是當路徑中的目錄不存在時創建一個,
接著下載github鏡像的tools目錄的原始碼
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后重新打開,按照提示安裝,會看到這樣的結果:

大功告成,ready to go!
六、運行第一個程式
執行 go install github.com/github-user/hello
此命令會構建 hello 命令,產生一個可執行的二進制檔案, 接著它會將該二進制檔案作為 hello(在 Windows 下則為 hello.exe)安裝到作業空間的 bin 目錄中, 在我們的例子中為 $GOPATH/bin/hello,具體一點就是 $HOME/go/bin/hello,
注意一點,這條命令可以在任何路徑下執行,go 工具會根據 GOPATH 指定的作業空間,在 github.com/user/hello 包內查找原始碼,
現在,我們可以在命令列下輸入它的完整路徑來運行它了:
$GOPATH/bin/hello
如果已經將 $GOPATH/bin 添加到 PATH 中了,只需輸入該二進制檔案名即可:
hello

到這里go的安裝程序就結束了,以下內容是一些擴展,
七、安裝與運行tour
(詳情戳https://github.com/Go-zh/tour)
由于github下載太慢所以只能安裝tour目錄下的gotour,運行結果如下:

八、我的第一個庫與測驗
(詳情戳https://go-zh.org/doc/code.html)
-
目標
我們要撰寫一個庫,并讓hello.go使用這個庫中定義的方法,
-
庫目錄的創建與庫內容撰寫
與撰寫一個程式類似,第一步要先給這個庫創建一個包路徑,
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/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"))
}
最后,重新安裝hello程式之后就可以運行了(go會自動安裝所有hello程式依賴的東西,包括stringutil)

-
測驗
go有一個輕量級的測驗框架,你可以通過創建一個名字以 _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 github.com/github-user/stringutil命令來運行該測驗

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/42395.html
標籤:java
