從其他模組呼叫你的程式碼
注意: 本文是系列教學的一部分,該系列始於 建立 Go 模組。
在 上一節 中,你建立了一個 greetings 模組。在本節中,你將撰寫程式碼來呼叫你剛剛撰寫的模組中的 Hello 函數。你將撰寫可以作為應用程式執行的程式碼,並呼叫 greetings 模組中的程式碼。
步驟
1. 為你的 Go 模組原始碼建立一個 hello 目錄
這是你將撰寫呼叫者的位置。
建立此目錄後,你的目錄結構應如下所示,hello 和 greetings 目錄在同一層級:
例如,如果你的命令提示符在 greetings 目錄中,你可以使用以下命令:
2. 為你即將撰寫的程式碼啟用依賴追蹤
為了啟用程式碼的依賴追蹤,請執行 go mod init 命令,並為其提供你的程式碼將所在的模組名稱。
在本教學中,請使用 example.com/hello 作為模組路徑。
3. 建立一個名為 hello.go 的檔案
在你的文字編輯器中,在 hello 目錄中建立一個用於撰寫程式碼的檔案,並命名為 hello.go。
4. 撰寫程式碼以呼叫 Hello 函數並列印返回值
為此,將以下程式碼貼上到 hello.go 中:
在這段程式碼中,你:
- 宣告一個
main套件。在 Go 中,作為應用程式執行的程式碼必須在main套件中。 - 匯入兩個套件:
example.com/greetings和fmt套件。這為你的程式碼提供了存取這些套件中函數的權限。匯入example.com/greetings(你之前建立的模組中包含的套件)使你能夠存取Hello函數。你還匯入了fmt,它包含處理輸入和輸出文字的函數(例如將文字列印到主控台)。 - 透過呼叫
greetings套件的Hello函數取得問候語。
5. 編輯 example.com/hello 模組以使用本地的 example.com/greetings 模組
在生產環境中,你可以從其程式碼庫發布 example.com/greetings 模組(模組路徑應反映其發布位置),Go 工具可以找到它並下載。目前,由於你尚未發布該模組,你需要調整 example.com/hello 模組,以便它能在本地檔案系統中找到 example.com/greetings 的程式碼。
為此,使用 go mod edit 命令 編輯 example.com/hello 模組,將 Go 工具從其模組路徑(模組不存在的地方)重定向到本地目錄(模組存在的地方)。
a. 替換模組路徑
在 hello 目錄的命令提示符下,執行以下命令:
該命令指定在定位依賴項時,example.com/greetings 應替換為 ../greetings。執行命令後,hello 目錄中的 go.mod 檔案應包含一個 replace 指令:
b. 同步依賴項
在 hello 目錄的命令提示符下,執行 go mod tidy 命令 以同步 example.com/hello 模組的依賴項,新增程式碼所需但尚未在模組中追蹤的依賴項。
命令完成後,example.com/hello 模組的 go.mod 檔案應如下所示:
該命令在 greetings 目錄中找到了本地程式碼,然後加入了一個 require 指令,指定 example.com/hello 需要 example.com/greetings。你在 hello.go 中匯入 greetings 套件時建立了此依賴關係。
模組路徑後的數字是一個 偽版本號 —— 產生的數字,用於替代語意版本號(該模組尚未有)。
要引用一個 已發布 的模組,go.mod 檔案通常會省略 replace 指令,並使用帶有標記版本號的 require 指令。
有關版本號的更多資訊,請參閱 模組版本編號。
6. 執行你的程式碼以確認其是否正常運作
在 hello 目錄的命令提示符下,執行你的程式碼:
結論
恭喜!你已經撰寫了兩個功能正常的模組。
在接下來的下一個主題中,你將加入一些錯誤處理。