以python作為對比,在python中如果要使用自己寫的庫,該庫可以在當前或當前子目錄下,假設在當前目錄下,你需要在當前目錄下新建乙個__init__.py
的空檔案,這樣在當前目錄下的工作檔案中可以使用import ***
匯入自己寫的庫。go的package關鍵字定義該檔案所屬包,然後使用import關鍵字呼叫包。
以例項講解,首先有如下的目錄結構,當前在golang目錄下,learn.go是主檔案,golang下面有乙個say的資料夾,say資料夾下有乙個test.go檔案
其中的learn.go檔案的內容如下,正常輸出hello world!!!
package main
import
("fmt"
)func
main()
現在我想呼叫test.go檔案內的方法。先看test.go檔案內容有什麼
package say
import
"fmt"
func
dog(name string
)string
package say
的say是該檔案所在的包目錄。裡面的dog函式的首字母一定要大寫,因為go規定了首字母大寫才能暴露到外部,否則learn.go檔案不能找到該函式。
那learn.go檔案怎麼呼叫呢?learn.go檔案的內容如下
package main
import
("golang/say"
"fmt"
)func
main()
import "golang/say"
匯入,golang是模組名稱,後面會講到,在這裡使用當前檔案所在的目錄名,say是package包
好了執行一下,結果如下
learn.go:5:2: package golang/say is not in goroot (c:\program files\go\src\golang\say)
報錯了,說learn.go檔案的第五行中golang/say包沒有在goroot環境變數目錄下,到該c:\program files\go\src\目錄下發現有很多資料夾,那些資料夾大多是我們常使用的包,這樣我們就知道了我們常用的包原來都在這裡
我們回到learn.go所在的golang目錄下的終端,使用命令go mod init "模組名稱"
,模組名稱隨意取,這裡使用資料夾的名稱
然後在golang目錄下就生成了乙個檔案go.mod
再執行一下learn.go,結果如下,執行成功
到這裡就知道怎麼使用package語句了,就是乙個申明所屬包,而import引數和python差不多
那麼go mod init
命令有沒有影響了什麼環境變數呢?
使用命令go env
可以檢視所有關於go的環境變數,在使用go mod init
命令之前和之後,環境變數都沒有變,說明該命令只是生成了乙個檔案,那我們可以手動建立嗎?
檢視生成的go.mod檔案內容如下
module golang
go1.16
我們刪掉go.mod檔案,程式就會報錯,那我們手動建立乙個go.mod檔案,內容相同,執行learn.go正常
我們再把go.mod檔案的模組名修改,將golang改為mylove
在learn.go檔案中修改匯入名稱,程式任然正常
我們看看官方的包大概是什麼形狀的
到常用的fmt包下面看看
其中的print.go檔案定義了很多有關i/o輸入輸出的方法,看看該檔案,其中的部分結構如下
Go語言中的Package問題
問題一 go使用package組織原始碼的好處是什麼?1.任何原始碼屬於乙個包 2.用包組織便於 的易讀和復用 問題二 go語言中package的種類 go語言中存在兩種包 一種是可執行程式的包 一種是類庫函式的包。可執行程式的包,編譯完成後會生成乙個可執行檔案 靜態庫的包編譯之後會生成乙個.a為字...
Go語言基礎語法 package 5
2.1 必須要有 package main 包 且 必須在該包下有main函式 package 包名不為main package main1 import fmt func main1 執行結果如下圖所示 2.2 package main 包中沒有main函式 func main1 package ...
原創 go語言學習(十一)package簡介
1 go通過package的方式來組織原始碼 package 包名注意 任何乙個原始碼都屬於乙個包 作用 復用和可讀性 2 可執 程式的包名必須為main,並且包含乙個main函式 package main import fmt func main 3 package組織案例 再src calc的包...