微軟官方開發的 Go for Visual Studio Code 插件為 Go 語言 提供了豐富的支持。在 VS Code 中首次打開 Go 工作區后,VS Code 會自動檢測當前開發環境為 Go 並推薦安裝上述插件。
然而 Go 插件的安裝並不順利:輸出窗口的安裝信息提示其中一些依賴工具安裝失敗:
Installing github.com/mdempsky/gocode 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/stamblerre/gocode FAILED Installing github.com/ianthehat/godef FAILED Installing github.com/sqs/goreturns FAILED Installing golang.org/x/lint/golint FAILED 9 tools failed to install.
手動使用go get -v github.com/mdempsky/gocode
等命令同樣提示網絡連接失敗。
失敗原因
原因其實很簡單:golang.org 在國內由於一些眾所周知的原因無法直接訪問,而go get
在獲取gocode
、go-def
、golint
等插件依賴工具的源碼時,需要從 golang.org 上拉取部分代碼至GOPATH
,自然就導致了最后這些依賴於 golang.org 代碼的依賴工具安裝失敗。
解決辦法
解決也並不復雜:先通過git clone
命令手動將依賴工具的源碼拉取至GOPATH
的對應路徑,再通過go install
命令安裝依賴工具。
以 Windows 為例,首先進入%GOPATH%\src\
目錄,並創建golang.org\x
。
之后進入%GOPATH%\src\golang.org\x
,使用下列命令下載插件依賴工具的源碼:
git clone https://github.com/golang/tools.git tools
git clone
命令執行完畢后,所需的工具源碼就都保存在tools
目錄中。
最后進入%GOPATH%
目錄,根據之前的安裝失敗提示信息安裝對應的依賴工具:
go install github.com/mdempsky/gocode
go install github.com/ramya-rao-a/go-outline go install github.com/acroca/go-symbols go install golang.org/x/tools/cmd/guru go install golang.org/x/tools/cmd/gorename go install github.com/stamblerre/gocode go install github.com/ianthehat/godef go install github.com/sqs/goreturns go install golang.org/x/lint/golint
安裝 golint
在執行go install
命令安裝 golint 時,提示信息如下:
PS C:\Users\abel1\go> go install golang.org/x/lint/golint
can't load package: package golang.org/x/lint/golint: cannot find package "golang.org/x/lint/golint" in any of: C:\Go\src\golang.org\x\lint\golint (from $GOROOT) C:\Users\abel1\go\src\golang.org\x\lint\golint (from $GOPATH)
這是因為 golint 的源碼在lint
下,而不是tools
,需要單獨拉取 golint 源碼。
進入%GOPATH%\src\golang.org\x
,執行下列命令拉取 golint 源碼:
git clone https://github.com/golang/lint
最后回到%GOPATH%
,通過go install
安裝 golint:
go install github.com/golang/x/lint/golint
重啟 VS Code 后,插件就可以正常使用了。Let's go for Go!
參考文章
作者:蘇易北
鏈接:https://www.jianshu.com/p/37f1d9265fd0
來源:簡書