golang包管理
一、GOPATH
GOPATH:進行golang開發時的作業空間,你撰寫的go源代碼和編譯后生成的可執行程式都將存放在GOPATH下,注意,GOPATH只是一個普通的檔案目錄并且你所有的編碼作業都應該在該目錄下完成(golang 1.11版本引入 包依賴管理工具go mod,可以在GOPATH以外撰寫go程式),
配置GOPATH:首先創建一個目錄C:\go(windows),$HOME/go(linux),該目錄將作為GOPATH;GOPATH的目錄結構如下:
bin:存放編譯后的可執行檔案,
src:存放GO程式原始碼,它們被組織成包(每個目錄都對應一個包),
pkg:包物件,
在環境變數中配置GOPATH:
$ export GOPATH=$HOME/go
$ export PATH=$PATH:$GOPATH/bin
注意:GOPATH可以包含多個目錄,這些目錄不能和go的安裝目錄相同,
二、包匯入
go程式的第一行陳述句必須是 package pkgname
package hello // hello 為包名
go中的包名稱通常以一個全小寫的單詞(縮寫)命名(如fmt),為了自己的包名稱不和go標準庫中的包名稱重名,對于你自己的包必須要選擇一個基本路徑,例如你有一個fmt的包,那你必須選擇一個基本路徑example.com/user/,才不會和標準庫中的fmt沖突,go官方推薦使用github.com/user做為包的基本路徑(user為github賬號名),go檔案中的包名稱(package pkgname)為go源檔案所在檔案夾(包)的最后一級檔案夾名,
注意:對于可執行檔案的包名必須為main,
package main
例子:
定義一個自己的go庫:
在GOPATH/src下創建一個包github.com/user/hello(如果使用go mod init 可以在任意位置創建包):
# golang 1.11前 GOPATH模式
$ mkdir $GOPATH/src/github.com/user/hello
$ cd $GOPATH/src/github.com/user/hello
# golang 1.11后 go mod模式
$ mkdir $HOME/github.com/user/hello
$ go mod init github.com/user/hello # 創建一個模塊(專案)
在hello目錄(包)下創建hello.go:
package hello // 包名稱,包名稱為go源檔案所在檔案夾(包)的最后一級檔案夾名
import (
"fmt"
)
func Hello() {
fmt.Println("hello world")
}
執行go命令:
$ go build github.com/user/hello # 將會去GOPATH/src尋找github.com/user/hello
使用自定義的庫:
在GOPATH/src下創建一個包github.com/user/test:
$ mkdir $GOPATH/src/github.com/user/test
$ cd $GOPATH/src/github.com/user/test
在test目錄(包)下創建test.go
package main // 包名稱
import (
"fmt"
"github.com/KillerTwo/hello" // 匯入自定義包
)
func main() {
hello.Hello() // 呼叫hello包中的Hello()
}
執行go命令:
$ go install /github.com/user/test # 將會去GOPATH/src尋找github.com/user/test
該命令將會在$GOPATH/bin 下生成可執行檔案(二進制檔案)test,
運行可執行檔案:
$ hello
# 輸出: hello world
對于golang包管理官方檔案有很好的介紹和例子,本文只是自己看官方檔案的簡單總結,如有寫的不清楚的地方請看官方檔案(https://golang.google.cn/doc/code.html#Command),
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/17397.html
標籤:Go
