[Go] go work와 replace
go work
에 대한 이해를 돕기 위해서 간단한 실습을 했습니다.
C:.
| go.work
|
+---mainapp
| go.mod
| main.go
|
\---utils
go.mod
greet.go
위와 같은 폴더 경로를 갖고 있습니다.
utils
utils
에 greet.go
내용은 아래와 같습니다.
package utils
func Greet(name string) string {
return "Hello, " + name + "!"
}
간단한 greeting util 입니다.
go mod init github.com/test/utils
mod 이름으로 init을 했습니다.
main
package main
import (
"fmt"
"github.com/test/utils"
)
func main() {
fmt.Println(utils.Greet("Jone"))
}
main.go
에서는 Greet을 사용하는 코드가 있습니다.
go mod init github.com/test/mainapp
go work
를 사용하지 않으면 위 코드는 에러가 납니다.
go work
아래 처럼 go work를 사용해야 합니다.
.
에 올라옵니다. 즉 ls를 하면 mainapp
과 utils
가 나오는 위치입니다.
이곳에서
go work init
go work use ./mainapp ./utils
를 하면
go 1.22.2
use (
./mainapp
./utils
)
이렇게 만들어집니다.
그러면 위처럼
import (
...
"github.com/test/utils"
)
를 사용할 수 있습니다.
go work를 사용하지 않는다면
cd mainapp
go mod edit -replace github.com/test/utils=../utils
go mod tidy
이렇게 한다면 go work 없이 가능하기도 합니다.