GO語言的package怎麼使用

2021-10-20 06:46:39 字數 2494 閱讀 8111

以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的包...