簡單圖文配置golang+vscode【win10/centos7+golang helloworld+解決install failed等情況】
Title:簡單圖文配置golang+vscode【win10/centos7+golang helloworld+解決install failed等情況】(閱讀時間:10分鐘)
一.win10
0.系統環境
作業系統:win10 家庭版 1909
硬體資訊(做基本的golang開發,硬體要求不高):
1. win10配置golang環境
①下載相關軟體
GO 1.15 https://golang.org/dl/
VSCODE https://code.visualstudio.com/
【注:本文主要著力於配置golang,省略安裝vscode的步驟】
②建立gowork工作空間
按照https://go-zh.org/doc/code.html
在PC的任意目錄下建立gowork資料夾,並建立src、bin和pkg三個子資料夾。此處我將其放在固態硬碟所在的目錄。
Go程式碼必須放在工作空間內。它其實就是一個目錄,其中包含三個子目錄:
src 目錄包含Go的原始檔,它們被組織成包(每個目錄都對應一個包),
pkg 目錄包含包物件,
bin 目錄包含可執行命令。
③配置環境變數(GOPATH+PATH)
a.GOPATH
新建環境變數GOPATH,值為gowork目錄,如C:\gowork
b.PATH
在PATH下新增gowork目錄的bin資料夾,如C:\gowork\bin
④驗證環境配置結果
2. win10配置vscode go環境
①安裝vscode的go外掛
vscode新增go外掛
②嘗試執行
這時就可以在gowork/src目錄下寫一個hello.go:
package main
import "fmt"
func main() {
fmt.Printf("Hello word")
}
此時在命令列輸入go run hello.go可以直接執行,但在vscode下還不能執行。
③vscode執行報錯情況(install failed)
用vscode開啟gowork/src目錄,右下角提示需要安裝依賴包
install all後出現以下情況:
Installing github.com/mdempsky/gocode FAILED Installing github.com/uudashr/gopkgs/v2/cmd/gopkgs FAILED Installing github.com/ramya-rao-a/go-outline FAILED Installing github.com/acroca/go-symbols FAILED Installing golang.org/x/tools/cmd/guru FAILED Installing golang.org/x/tools/cmd/gorename FAILED Installing github.com/cweill/gotests/... FAILED Installing github.com/fatih/gomodifytags FAILED Installing github.com/josharian/impl FAILED Installing github.com/davidrjenni/reftools/cmd/fillstruct FAILED Installing github.com/haya14busa/goplay/cmd/goplay FAILED Installing github.com/godoctor/godoctor FAILED Installing github.com/go-delve/delve/cmd/dlv FAILED Installing github.com/stamblerre/gocode FAILED Installing github.com/rogpeppe/godef FAILED Installing github.com/sqs/goreturns FAILED Installing golang.org/x/lint/golint FAILED
④vscode go配置
根據https://goproxy.io/zh/的介紹:
如果您使用的 Go 版本是 1.13 及以上 (推薦)
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct
# 設定不走 proxy 的私有倉庫,多個用逗號相隔(可選)
go env -w GOPRIVATE=*.corp.example.com
# 設定不走 proxy 的私有組織(可選)
go env -w GOPRIVATE=example.com/org_name
命令列輸入:
重新開啟Vscode -> install all,配置成功。
⑤再次執行golang+vscode helloworld
用vscode開啟gowork/src資料夾:
vscode除錯的快捷鍵為F5,按下F5執行程式碼如下:
至此,golang的helloworld已順利完成啦~~
3. 安裝與執行 go tour
在【二.centos7】中展示。
4. golang的第一個包與測試
在【二.centos7】中展示。
5. 其他可能遇到的問題
vscode使用F5進行除錯時,遇到 go:cannot find main module 的問題
在launch.json下進行如下配置,再執行除錯即可:
{
// 使用 IntelliSense 瞭解相關屬性。
// 懸停以檢視現有屬性的描述。
// 欲瞭解更多資訊,請訪問: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "auto",
"remotePath":"",
"host": "127.0.0.1",
"program": "${fileDirname}",
"env": {
"GO111MODULE": "off"
},
"args": [],
"showLog": false,
}
]
}
二.centos7
0.系統環境
作業系統:CentOS7
硬體資訊:使用virtual box配置虛擬機器(記憶體3G、磁碟30G)
1.virtual box安裝centos7
此步驟比較簡單,借鑑部落格即可輕鬆完成,由於不是主要內容,只貼出centos7下載地址和借鑑部落格。
centos7下載地址:https://www.centos.org/download/
借鑑部落格:https://www.cnblogs.com/gaomanito/p/11460381.html
2.centos7配置golang環境
①下載相關軟體+建立gowork工作空間+配置環境變數(GOPATH+PATH)+驗證環境配置結果
此處使用老師部落格上推薦的yum安裝的方法,至於部落格上提到的版本不是最新的問題,其實使用適當的源就可以解決。
依次輸入以下指令即可:
rpm --import https://mirror.go-repo.io/centos/RPM-GPG-KEY-GO-REPO
curl -s https://mirror.go-repo.io/centos/go-repo.repo | tee /etc/yum.repos.d/go-repo.repo
yum install golang
在安裝完golang後,與win10相似,需要自己建立gowork資料夾,並且配置GOPATH和PATH的環境變數。
依次輸入以下指令即可:
mkdir -p ~/go/{bin,pkg,src}
echo 'export GOPATH="$HOME/go"' >> ~/.bashrc
echo 'export PATH="$PATH:${GOPATH//://bin:}/bin"' >> ~/.bashrc
安裝並配置完畢後,輸入go version檢驗是否配置成功:
輸入go env檢查環境變數:
②建立helloworld
建立$GOPATH/src/github.com/user/hello資料夾如下:
mkdir $GOPATH/src/github.com/user/hello -p
用vscode建立hello.go檔案並使用以下程式碼:
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
使用go run hello.go執行如下:
3.centos7配置vscode go環境
使用rpm下載並安裝vscode,官方教程如下:https://code.visualstudio.com/docs/setup/linux#_rhel-fedora-and-centos-based-distributions
依次輸入以下指令即可:
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
yum check-update
sudo yum install code
vscode配置go環境的方法與win10一致,請借鑑【一.win10】中的操作即可。
4.安裝與執行 go tour
根據https://github.com/Go-zh/tour配置gotour,並執行離線版的gotour,指令如下:
go get -u github.com/Go-zh/tour
./tour //在$GOPATH/bin資料夾下生成tour
當然,也可以線上使用gotour:https://tour.go-zh.org/welcome/1
個人而言更傾向於前者,因為經測試本地執行速度更快。
5.golang的第一個包
首先,在進行測試前,務必要將之前為了配置vscode而設定的https://goproxy.io相關環境變數去掉,不然在go build時會報錯(比如會讓你輸入github的賬戶密碼,而無法搜尋到本地的github.com資料夾)。
go env -w GO111MODULE=off
go env -w GOPROXY=" "
①建立第一個庫
建立資料夾:
mkdir $GOPATH/src/github.com/user/stringutil
接著,用vscode在該目錄中建立名為 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 mod init stringutil //如果報錯cannot find main module,加上這行即可
go build
②修改
修改原來的 hello.go 檔案(它位於 $GOPATH/src/github.com/user/hello)去使用它:
package main
import (
"fmt"
"github.com/user/stringutil"
)
func main() {
fmt.Printf(stringutil.Reverse("!oG ,olleH"))
}
③執行
再次安裝 hello 程式時,stringutil 包也會被自動安裝。執行此程式的新版本,能看到一條新的,反向的資訊:
6.golang的第一個測試
根據教程(https://go-zh.org/doc/code.html)介紹,Go擁有一個輕量級的測試框架,它由 go test 命令和 testing 包構成。
我們可以通過建立一個名字以 _test.go 結尾的,包含名為 TestXXX 且簽名為 func (t *testing.T) 函式的檔案來編寫測試。
測試框架會執行每一個這樣的函式;若該函式呼叫了像 t.Error 或 t.Fail 這樣表示失敗的函式,此測試即表示失敗。
我們可通過建立檔案 $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 github.com/user/stringutil
由上可知已順利完成測試。
三.總結
本次實驗內容並不複雜,主要就是配置環境+簡單的golang helloworld水平的程式設計任務。
然而耗時還是較長,主要是因為第一次使用時遇到的坑比較多,比如虛擬機器安裝centos的坑、安裝golang配置環境變數的坑、安裝vscode因為GFW的原因得更換源的坑等等。
總的來說,本次實驗的收穫集中在環境的搭配上,希望在之後的實驗中,能在golang語言的應用上收穫更多。
四.References
老師部落格:https://pmlpml.gitee.io/service-computing/post/ex-install-go/
官方DOC:https://go-zh.org/doc/code.html
菜鳥程式設計golang:https://www.runoob.com/go/go-tutorial.html
安裝配置go:https://cloud.tencent.com/developer/article/1478660
安裝配置vscode:https://code.visualstudio.com/docs/setup/linux#_rhel-fedora-and-centos-based-distributions