
$ ls *
go.mod main.go
hello:
go.mod hello.go
$
$ cat go.mod
module example.com/fourier
go 1.18
$
$ cat hello/go.mod
module example.com/fourier/hello
go 1.18
$
$ go run .
main.go:5:2: no required module provides package example.com/fourier/hello; to add it:
go get example.com/fourier/hello
$ go work init . ./hello
$ ls
go.mod go.work hello main.go
$ cat go.work
go 1.18
use (
.
./hello
)
$ go run .
Hello world
Architecture: darwin
$
$ pwd
/Users/siliconSavanna/Projects/Golang/fourier
$ mkdir main
$ mv main.go ./main
$ cd main
$ go mod init example.com/fourier/main
go: creating new go.mod: module example.com/fourier/main
go: to add module requirements and sums:
go mod tidy
$
$ cd ../
$ pwd
/Users/siliconSavanna/Projects/Golang/fourier
$ rm go.work
$ go work init ./main ./hello
$ cat go.work
go 1.18
use (
./hello
./main
)
$ go run main/main.go
Hello world
Architecture: darwin
$
$ cd ../
$ pwd
/Users/siliconSavanna/Projects/Golang/fourier
$ rm go.work
$ cd main
$ go mod edit -replace example.com/fourier/hello=../hello
$ go mod tidy
go: found example.com/fourier/hello in example.com/fourier/hello v0.0.0-00010101000000-000000000000
$ go run .
Hello world
Architecture: darwin
$
$ cat go.mod
module example.com/fourier/main
go 1.18
replace example.com/fourier/hello => ../hello
require example.com/fourier/hello v0.0.0-00010101000000-000000000000
$