[Go언어] go.mod 파일은 무엇인가?
git clone https://github.com/grpc/grpc-go
위의 코드를 다운받아 Go 언어와 gRPC를 공부하고 있습니다.
소스중에는 예제 코드가 있는데 grpc-go/examples/helloworld/greeter_server에 위치한 main.go 파일을 봤습니다.
main.go의 상단부에는 아래의 코드가 있습니다.
import (
"context"
"log"
"net"
"google.golang.org/grpc"
pb "google.golang.org/grpc/examples/helloworld/helloworld"
)
"context", "log", "net"은 시스템 라이브러리?를 사용하기 위해 쓰인듯 합니다.
그런데 아래 2줄은 조금 이상해 보이더라구요.
그래서 상위 폴더를 좀 조사중 go.mod파일에서 단서를 발견했습니다.
module google.golang.org/grpc/examples
go 1.11
require (
cloud.google.com/go v0.63.0 // indirect
github.com/golang/protobuf v1.4.2
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
google.golang.org/genproto v0.0.0-20200806141610-86f49bd18e98
google.golang.org/grpc v1.31.0
google.golang.org/protobuf v1.25.0
)
replace google.golang.org/grpc => ../
상단히 짧은 파일입니다.
여기서도 필요한 라이브러리를 정의하는 것 같습니다.
blog.golang.org/using-go-modules
공식 홈페이지에 상당히 잘 정리되어 있습니다.
처음에는 go mod init example.com/hello와 같은 명령어로 모듈(module)의 이름을 명시해주면 이 이름으로 go.mod파일이 생깁니다. 그리고.. 이후에는 go 빌드 관련 명령어를 사용하면 필요에 따라 자동으로 디펜던시가 관리 되는 것 같습니다.
너무 길어지면 머리가 아프니 간단한 설명을 적고 끝내겠습니다.
Go modules are the future of dependency management in Go.
Go 모듈은 Go에서 디펜던시 관리의.. 미래?핵심?이라고 합니다. ㅎㅎ
그냥 간단히 디펜던시/버전 관리하기 위해서 사용되는 파일이라고 보면 될 것 같습니다.
swift에서 podfile, 안드로이드에서 gradle 파일과 유사한 것 같습니다.
와우 아래의 사이트에 설명이 잘 되어있네요!
golang.site/go/article/15-Go-%ED%8C%A8%ED%82%A4%EC%A7%80
import에서 아래 코드가 무슨 의미인지 궁금했었는데.. 그냥 alias 였군요.
pb "google.golang.org/grpc/examples/helloworld/helloworld"
댓글 영역