1、包的一些基本的概念git
一、在同一個目錄下的全部go文件中,只能有一個main函數。若是存在多個main函數,則在編譯的時候會報錯github
那麼,在同一個目錄下的兩個go文件到底是什麼關係? 爲何會彼此影響呢?函數
這裏要提到go package的兩個約束:spa
一、同一個目錄下的go文件,若是package是main,那麼這個目錄下的go文件只能有一個main函數。3d
二、同一個目錄下的go文件,只能是一個package。 (注意: 這裏說的是同一個目錄下的go文件,但不是同一個目錄下的其餘目錄中的go文件)blog
那麼問題來了,爲何須要package呢?文檔
在一個項目中,會有不少個go文件,package的做用就是進行一個代碼分類組織get
舉個例子:string
1.在hello.go裏面定義個main函數,引用了main的package。it
2.在另外一個echo.go裏面,由於只能有一個main函數,因此這裏只定義了變量 var X string = "chenchao"
3.那麼在hello.go裏面就能夠直接用另外一個文件中的X變量了
package的做用:
一、同一個package下能夠共享變量
二、同一個package下能夠共享函數
2、一個在線的package的幫助文檔
http://godoc.org/+包的名稱
3、引入第三方的package
例如: 引入github下的一個庫
一、go get github.com/icexin/golib
這一步操做就是講git上的庫下載到本地,你會發現這條命令會將package默認下載到 $GOPATH下的/src/下,並與package的目錄結構一致。
二、在/src/的其餘目錄下新建立一個目錄如:/thirdlib/,做爲另外一個package,而後在目錄下新建一個main.go文件,並導入剛纔下載的第三方package
這裏引入的第三方package 是一個全路徑,這個路徑就是從 $GOPATH/src/開始算起。因此,要寫的路徑就是從/src/開始。