環境變量GOPATH使用試驗

Intel Core i5-8250U,Windows 10家庭中文版,Visual Studio Code 1.26.1

 

中午的時候,自己把環境變量GOBIN給清空了。剛剛繼續工作時發生了異常:使用Visual Studio Code寫的代碼,無法使用go install編譯運行(或生成可執行文件)

package main

var x, y int
var (
	a int
	b bool
)

var c, d int = 1, 2
var e, f = 123, "hello"

func main() {
	g, h := 321, "olleh"

	println(x, y, a, b, c, d, e, f, g, h)
}
eg1.go

源文件位於項目的src下的app3文件夾中——D:\ws\golang\prj1\src\app3。

 

在終端進入prj1的src目錄,執行go install .\app3,結果發生下面的錯誤——應用程序app3的目錄位於GOPATH之外,,此時的GOPATH是默認值,只有一個目錄,位於C:\users\<username>\go

>go install .\app3
go install: no install location for directory D:\ws\golang\prj1\src\app3 outside GOPATH
        For more details see: 'go help gopath'

進入app3的目錄執行go install eg1.go也不行——提示沒有設置GOBIN,因爲自己前面清空了它:

app3>go install eg1.go
go install: no install location for .go files listed on command line (GOBIN not set)

 

在前面一篇博文的更新中瞭解到,設置了GOBIN可以解決第二個問題。那麼,第一個問題怎麼解決呢?

通過看一些關於GO環境變量的文章(參考鏈接),知道GOPATH可以設置多個值,好吧,把當前項目加入到GOPATH中,再測試一下吧!

 

注意,在這之前,自己嘗試把eg1.go放到GOPATH下的src中的一個文件夾中,此時執行go install是 成功的,所以纔會有上面的想法 和 本文。

 

在當前終端把eg1.go所在項目路徑 附加到GOPATH中,再測試go install,結果,成功!可執行文件被放到了項目的bin文件中了。

D:\ws\golang\prj1>echo %GOPATH%
C:\Users\log\go

D:\ws\golang\prj1>set GOPATH=%GOPATH%;D:\ws\golang\prj1

D:\ws\golang\prj1>echo %GOPATH%
C:\Users\log\go;D:\ws\golang\prj1

D:\ws\golang\prj1>go install .\src\app3

D:\ws\golang\prj1>dir bin
 驅動器 D 中的卷是 新加捲
 卷的序列號是 BAD3-E0B3

 D:\ws\golang\prj1\bin 的目錄

2018/09/10  15:36    <DIR>          .
2018/09/10  15:36    <DIR>          ..
2018/09/10  15:04         1,021,440 app2.exe
2018/09/10  15:36         1,021,440 app3.exe

D:\ws\golang\prj1>.\bin\app3.exe
0 0 0 false 1 2 123 hello 321 olleh

 

上面執行成功!

 

前面提到的是兩個錯誤:go install後跟文件夾名-失敗,go install後跟源文件名-失敗。上面設置GOPATH僅僅解決了第一個問題,那麼,第二個問題怎麼解決呢?

根據錯誤提示,設置GOBIN!GOBIN設置在哪裏,go install後的可執行文件就出現在哪裏!(前一篇博文的更新部分有介紹)。

 

查看go install的用法:其最後一個參數時packages(多個包嗎?),而不是源文件,,這部分內容自己還沒弄明白,後續再dig。

>go help install
usage: go install [-i] [build flags] [packages]

Install compiles and installs the packages named by the import paths.

The -i flag installs the dependencies of the named packages as well.

For more about the build flags, see 'go help build'.
For more about specifying packages, see 'go help packages'.

See also: go build, go get, go clean.

 

測試使用go install同時安裝多個應用程序:果然可以!

D:\ws\golang\prj1\src>go install app1 app2 app3

D:\ws\golang\prj1\src>cd ..

D:\ws\golang\prj1>cd bin

D:\ws\golang\prj1\bin>dir
 驅動器 D 中的卷是 新加捲
 卷的序列號是 BAD3-E0B3

 D:\ws\golang\prj1\bin 的目錄

2018/09/10  15:47    <DIR>          .
2018/09/10  15:47    <DIR>          ..
2018/09/10  15:47         1,952,768 app1.exe
2018/09/10  15:47         1,021,440 app2.exe
2018/09/10  15:47         1,021,440 app3.exe
               3 個文件      3,995,648 字節
               2 個目錄 78,701,293,568 可用字節

 

通過本次試驗,自己也理解了Eclipse裏面的一個Go配置項的意義了:Also add project location to GOPATH, ...

 

參考鏈接

1.GOROOT、GOPATH、GOBIN、project目錄

 

後記

對於Go命令工具,自己還需要更熟悉纔是。那樣的話,可以少走不少彎路的。

下面的教程挺好的,需要看看:

GO 命令教程(http://wiki.jikexueyuan.com/project/go-command-tutorial/)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章