教學課程:建立 Go 模組
這是教學課程的第一部分,介紹 Go 語言的幾個基本功能。如果您剛開始使用 Go,請務必參閱 教學課程:開始使用 Go,其中介紹了 go
命令、Go 模組和非常簡單的 Go 程式碼。
在本教學課程中,您將建立兩個模組。第一個是打算由其他函式庫或應用程式匯入的函式庫。第二個是會使用第一個函式庫的呼叫應用程式。
本教學課程的順序包含七個簡短主題,每個主題說明語言的不同部分。
- 建立模組 -- 編寫一個小模組,其中包含您可以從另一個模組呼叫的函式。
- 從另一個模組呼叫您的程式碼 -- 匯入並使用您的新模組。
- 傳回並處理錯誤 -- 加入簡單的錯誤處理。
- 傳回隨機問候語 -- 處理切片中的資料(Go 的動態大小陣列)。
- 傳回多人的問候語 -- 將鍵值對儲存在對應中。
- 加入測試 -- 使用 Go 內建的單元測試功能來測試您的程式碼。
- 編譯並安裝應用程式 -- 在本地端編譯並安裝您的程式碼。
先備條件
- 一些程式設計經驗。此處的程式碼非常簡單,但了解函式、迴圈和陣列會有所幫助。
- 一個用於編輯程式碼的工具。您擁有的任何文字編輯器都可以正常運作。大多數文字編輯器都支援 Go。最受歡迎的是 VSCode(免費)、GoLand(付費)和 Vim(免費)。
- 一個命令終端機。Go 可順利使用 Linux 和 Mac 上的任何終端機,以及 Windows 中的 PowerShell 或 cmd。
啟動其他人可以使用的模組
首先建立一個 Go 模組。在模組中,您可以收集一個或多個相關套件,以取得一組離散且有用的函式。例如,您可以建立一個模組,其中包含具有執行財務分析功能的套件,以便撰寫財務應用程式的其他人可以使用您的工作。如需瞭解開發模組的更多資訊,請參閱開發和發佈模組。
Go 程式碼會分組到套件中,而套件會分組到模組中。您的模組會指定執行程式碼所需的相依性,包括 Go 版本和它所需的另一組模組。
當您在模組中新增或改善功能時,您會發佈模組的新版本。撰寫呼叫模組中函式的程式碼的開發人員可以匯入模組的更新套件,並在將其投入生產使用之前,使用新版本進行測試。
-
開啟命令提示字元,並使用
cd
進入您的主目錄。在 Linux 或 Mac 上
cd
在 Windows 上
cd %HOMEPATH%
-
為您的 Go 模組原始程式碼建立一個
greetings
目錄。例如,從您的主目錄使用下列指令
mkdir greetings cd greetings
-
使用
go mod init
指令 啟動您的模組。執行
go mod init
指令,並給予您的模組路徑 -- 在這裡,使用example.com/greetings
。如果您發佈模組,這必須是 Go 工具可以下載您的模組的路徑。這會是您的程式碼存放庫。如需瞭解如何使用模組路徑為您的模組命名,請參閱管理相依性。
$ go mod init example.com/greetings go: creating new go.mod: module example.com/greetings
go mod init
指令會建立一個 go.mod 檔案來追蹤程式碼的相依性。到目前為止,檔案只包含模組名稱和程式碼支援的 Go 版本。但是當您加入相依性時,go.mod 檔案會列出程式碼所依賴的版本。這會讓建置可重複,並讓您可以直接控制要使用的模組版本。 - 在文字編輯器中,建立一個檔案來撰寫程式碼,並將其命名為 greetings.go。
-
將下列程式碼貼到 greetings.go 檔案中,然後儲存檔案。
package greetings import "fmt" // Hello returns a greeting for the named person. func Hello(name string) string { // Return a greeting that embeds the name in a message. message := fmt.Sprintf("Hi, %v. Welcome!", name) return message }
這是模組的第一個程式碼。它會傳回一個問候語給任何要求的呼叫者。您會在下一步撰寫呼叫此函式的程式碼。
在此程式碼中,您
-
宣告一個
greetings
套件來收集相關函式。 -
實作一個
Hello
函式來傳回問候語。此函式會接收一個型別為
string
的name
參數。函式也會傳回一個string
。在 Go 中,名稱以大寫字母開頭的函式可以由不在同一個套件中的函式呼叫。這在 Go 中稱為匯出名稱。如需有關匯出名稱的更多資訊,請參閱 Go 導覽中的 匯出名稱。 -
宣告一個
message
變數來儲存您的問候語。在 Go 中,
:=
營運子是宣告和初始化變數於一行中的捷徑(Go 使用右邊的值來判斷變數的型別)。使用長的方式,您可能會這樣撰寫var message string message = fmt.Sprintf("Hi, %v. Welcome!", name)
-
使用
fmt
套件的Sprintf
函數 來建立問候訊息。第一個引數是格式字串,而Sprintf
會將name
參數的值替換為%v
格式動詞。插入name
參數的值即可完成問候文字。 - 將格式化的問候文字傳回給呼叫者。
-
宣告一個
在下一步中,您將從另一個模組呼叫此函數。