AdSense

網頁

2021/5/1

Golang 使用外部package

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.


沒有留言:

AdSense