[Go언어] go.mod 파일은 무엇인가?

프로그래밍/Go lang2020. 11. 4. 23:03

 

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

 

Using Go Modules - The Go Blog

Tyler Bui-Palsulich and Eno Compton 19 March 2019 Introduction This post is part 1 in a series. Go 1.11 and 1.12 include preliminary support for modules, Go’s new dependency management system that makes dependency version information explicit and easier

blog.golang.org

 

공식 홈페이지에 상당히 잘 정리되어 있습니다.

 

처음에는 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

 

예제로 배우는 Go 프로그래밍 - Go 패키지

1. Go 패키지 Go는 패키지(Package)를 통해 코드의 모듈화, 코드의 재사용 기능을 제공한다. Go는 패키지를 사용해서 작은 단위의 컴포넌트를 작성하고, 이러한 작은 패키지들을 활용해서 프로그램을

golang.site

 

import에서 아래 코드가 무슨 의미인지 궁금했었는데.. 그냥 alias 였군요.

pb "google.golang.org/grpc/examples/helloworld/helloworld"

 

 

작성자

Posted by 드리머즈

관련 글

댓글 영역