Go使用外部的package。
本篇參考官方教學的Call code in an external package。
外部package就是其他人寫好的程式,類似Java的函式庫/套件(library)。
下面在程式中匯入外部package並使用其函式。
在pkg.go.dev
可搜尋開源的第三方package,例如rsc.io/quote
(此為範例用pacakge,其函式會返回一些關於Go的小引言)。Go匯入依賴的module時會從此下載,類似Java Maven的Maven Central Repository。
在hello.go
中匯入外部package rsc.io/quote
並使用函式Go()
。
hello.go
package main
import "fmt"
import "rsc.io/quote" // 匯入外部package rsc.io/quote
func main() {
fmt.Println("Hello, World!")
fmt.Println(quote.Go()) // 呼叫rsc.io/quote的Go()函式
}
在命令列輸入go mod tidy
來加入程式中缺少的module依賴,即上面的rsc.io/quote
,執行後Go就會開始下載缺少的module。
~/Documents/tmp/hello$ go mod tidy
go: finding module for package rsc.io/quote
go: downloading rsc.io/quote v1.5.2
go: found rsc.io/quote in rsc.io/quote v1.5.2
go: downloading rsc.io/sampler v1.3.0
go: downloading golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c
執行完後目錄會多了go.sum
檔,作用為紀錄下載module的checksum hash(校驗雜湊碼)。
~/Documents/tmp/hello$ ls
go.mod go.sum hello.go
開啟go.mod
可看到加入的依賴module path require rsc.io/quote v1.5.2
。
go.mod
module abc.com/hello
go 1.16
require rsc.io/quote v1.5.2
接著輸入go run .
執行hello.go
,會印出"Don't communicate by sharing memory, share memory by communicating.",此段文字即為quote.Go()
的效果。
~/Documents/tmp/hello$ go run .
Hello, World!
Don't communicate by sharing memory, share memory by communicating.
沒有留言:
張貼留言