go的包管理学习
go如何使用自己寫的包?
1.goroot
go分兩個重要的路徑,GOROOT和GOPATH
GOROOT路徑指的是go安裝的位置,包含go的編譯器相關的文檔,一般來說只需要配個環境變量就不需要考慮了。
2.gopath
GOPATH指的是工作目錄。在windows平臺上,默認的位置是C:\Users\用戶名\go。
gopath是干嘛的呢,就是所有的go項目應該都在gopath路徑下。
gopath目錄下必須又一個src文件夾,所有的項目都在這個src文件夾下,當編譯項目時,還會生成pkg文件夾和bin文件夾,bin文件夾生成編譯后的exe文件,pkg文件夾打包了exe文件所需的包,存儲預編譯的目標文件,以加快程序的后續編譯速度。
項目:一個項目會包含很多個文件和目錄,目錄下又有目錄和文件,項目路徑指的是包含所有這些文件和目錄的目錄路徑。
比如在c盤新建一個目錄projectA,然后在projectA下新建一個main.go文件,再新建一個目錄controller,controller目錄下又新建controller.go。那么c://projectA就是項目路徑。所以gopath路徑下不僅包含bin、pkg、src目錄,還有所有go項目的包文件。這些包文件很容易造成混亂,比如兩個不同的版本沖突。
在舊的go里,不推薦在c盤下建立新項目,新項目最好在gopath路徑下,當然,gopath路徑可以設置成很多個。
在一個go項目中,也不能隨便建立目錄,首先,在gopath下新建一個src目錄,代碼全部都要放在src目錄下。比如以上的例子projectA下不能直接新建main.go文件,必須創建一個src目錄,然后在src目錄下新建main.go。項目下載的依賴包都會下載到giopath目錄下,
一個日常的test項目的結構如下:
那么main.go要如何調用config.go中的函數呢?
3.根據 包名.函數名 調用函數。假設config.go下有一個函數funcTest()。如何在main.go中調用這個函數呢?首先查看config.go所屬的包,也就是第一含的package xxx(建議跟所屬的目錄名一樣,但是可以不一樣),假設是package myconfig,在main中就得寫出myconfig.funcTest().
go的找包原理:
首先會去找gopath路徑,然后在gopath路徑下找src目錄,最后在src目錄下尋找import中指定的路徑。所以說,要導入一個包,必須從項目名開始寫起,直到包的目錄。
參考:Go項目的目錄結構
go在打包時打包的路徑為main.go所在的目錄名
go的導包也太過麻煩了,所以現在由另外的導包方式,一是根據相對路徑找包。第二就是go modules了。這個還沒時間研究,搞不懂。
參考:
Go Modules 詳解
關于Go Modules,看這一篇文章就夠了
總結
- 上一篇: go结构体学习
- 下一篇: python查看函数参数,在python