嘿!我目前正在學習 Go Lang,我正在對我的概念做一些基本的筆記,儘管我也只是將它們發佈在這裡。它們沒有經過深思熟慮或寫得很好,但只是我時不時做筆記以供參考。
我正在學習 Maximilian Schwarzmüller 的 Udemy 課程,
筆記
- 我們可以將程式碼拆分為多個文件,然後將這些文件拆分為多個套件
- 然後我們可以在專案中使用這些套件
- 看起來和製作組件類似,將程式碼拆分成多個文件,以便更好的處理程式碼,這樣我們也可以創建自己的套件
創建包
- 我們可以建立一個新的 .go 檔案
- 每個 go 檔案都必須是套件的一部份
- 每當我們在同一個套件中聲明一個文件與其他文件時,我們就可以直接使用同一包的任何文件中的函數
- 例如,我們建立一個帶有函數的文件,要在不同的文件中呼叫該函數,我們可以將兩個文件放在同一個套件中,然後直接呼叫該函數
- 導入不是直接透過包傳遞
- 所以我們必須匯入新go檔案的功能中正在使用的其他套件
- 如果您在一個包中創建多個文件,那麼您可以將該包用於不同的項目,這樣您就可以擁有一個包含您一次又一次使用的代碼的包,然後將該代碼放入一個包中,並且該包可以是在另一個項目中用於相同目的
客製化套餐
- 要建立自訂包,我們必須為該包建立一個新資料夾
- 資料夾名稱應與套件名稱相同
- 檔名可以不同,不需要與套件名稱相同
package fileops
import (
"errors"
"fmt"
"os"
"strconv"
)
func writeFloatToFile(value float64, fileName string) {
valueText := fmt.Sprint(value)
os.WriteFile(fileName, []byte(valueText), 0644)
}
登入後複製
登入後複製
- 這裡有一個名為 fileops 的包,其中我有資料夾名稱 fileops,其中包含一個檔案
- 該文件可以命名為任何名稱,在文件頂部我聲明了我的文件所屬的包名稱
使用包
- 要使用這個自訂套件,你必須匯入它,流程與其他內建套件相同
- 但在這種情況下你必須指出與 go.mod 檔案相同的路徑
package main
import (
"fmt"
"example.com/bank/fileops"
)
登入後複製
登入後複製
- 這裡的 example.com/bank 來自創建專案時創建的 go.mod 檔案
導出標識 - 變數、函數等...
- 如果您正在使用不同套件中的某些函數,並且您已經建立了該套件,則必須匯出這些函數
- 從套件中導出某些內容,以某種方式定義名稱以大寫字母開頭
package fileops
import (
"errors"
"fmt"
"os"
"strconv"
)
func writeFloatToFile(value float64, fileName string) {
valueText := fmt.Sprint(value)
os.WriteFile(fileName, []byte(valueText), 0644)
}
登入後複製
登入後複製
- 這與JavaScript中的export關鍵字相同,我們使用export關鍵字定義一個函數或變量,並明確地定義該變量或函數需要導出並可以在其他文件中使用
- 因此函數或變數的命名可以定義是否要導出某些內容
package main
import (
"fmt"
"example.com/bank/fileops"
)
登入後複製
登入後複製
- Go有自己的包目錄,我們可以從中獲取一些可以使用的包,有時有些功能我們可能不想從頭開始創建,然後我們可以使用GO可用的“外部包” .
- 這與 NPM 套件的概念類似
使用外部包
func WriteFloatToFile(value float64, fileName string) {}
func GetFLoatFromFile(fileName string) (float64, error) {}
登入後複製
- 當我們執行此命令時,go.mod 檔案將被更改,並且套件將在那裡列出,所有第三方依賴項將在那裡列出
package main
import (
"fmt"
"example.com/bank/fileops"
)
fileops.WriteFloatToFile(accountBalance, accountBalanceFile)
登入後複製
- 要使用該套件,我們可以在要使用它的go檔案中定義導入路徑,導入路徑與儲存在go.mod檔案中的github連結相同
go get github.com/Pallinder/go-randomdata
登入後複製
- 之後的使用過程是一樣的,我們使用randomdata。取得所有方法並參考官方網站的包裝頁面並檢查我們可以使用的所有方法。
module example.com/bank
go 1.22.1
require github.com/Pallinder/go-randomdata v1.2.0 // indirect
登入後複製
以上是學習 GO : - 包的詳細內容。更多資訊請關注PHP中文網其他相關文章!