モジュールを作成
mainモジュールの作成手順と同様でフォルダーを作成してからします。
$ mkdir greetings
$ cd greetings
$ go mod init example.com/greetings
go: creating new go.mod: module example.com/greetings
ソースコードを作成します。
$ vi greetings.go
package greetings
import "fmt"
func Hello(name string) string {
message := fmt.Sprintf("Hi, %v. Welcome!", name)
return message
}
作成したモジュールをインポート
インポートするmainを作成
$ mkdir hello
$ cd hello
$ go mod init example.com/hello
go: creating new go.mod: module example.com/hello
$ vi main.go
package main
import (
"fmt"
"example.com/greetings"
)
func main() {
message := greetings.Hello("Golang")
fmt.Println(message)
}
モジュールをインポートする
mainからgreetingsをインポートします。
$ go get example.com/greetings
go: unrecognized import path "example.com/greetings": reading https://example.com/greetings?go-get=1: 404 Not Found
greetingsの場所を教えてもう一度試します。
$ go mod edit -replace example.com/greetings=../greetings
go.modから確認しましょう。
$ cat go.mod
module example.com/hello
go 1.20
replace example.com/greetings => ../greetings
そして依存関係を設定します。
$ go mod tidy
go: finding module for package example.com/greetings
example.com/hello imports
example.com/greetings: module example.com/greetings@latest found (v0.0.0-00010101000000-000000000000, replaced by ../greetings), but does not contain package example.com/greetings
go.modから確認しましょう。
module example.com/hello
go 1.20
replace example.com/greetings => ../greetings
require example.com/greetings v0.0.0-00010101000000-000000000000
実行してみましょう。!
$ go run main.go
Hi, Golang. Welcome!
main.goの”example.com/greetings”はgo.modのreplaceに従って../greetingsから参照する。