Go 툴체인

1 개요[ | ]

Crystal Clear action info.png 작성 중인 문서입니다.
Go Toolchains
Go 툴체인

2 소개[ | ]

Go 1.21부터 Go 배포판에는 go 명령어와 함께 표준 라이브러리, 컴파일러, 어셈블러 및 기타 도구들이 포함된 Go 툴체인이 함께 제공됩니다. go 명령어는 번들된 Go 툴체인을 사용할 수 있을 뿐만 아니라, 로컬 PATH에 있는 다른 버전이나 필요한 경우 다운로드하여 사용할 수 있습니다.

사용되는 Go 툴체인의 선택은 GOTOOLCHAIN 환경설정과 메인 모듈의 go.mod 파일 또는 현재 워크스페이스의 go.work 파일에 있는 gotoolchain 라인에 따라 달라집니다. 다른 메인 모듈이나 워크스페이스로 이동할 때마다 툴체인 버전도 모듈 종속성 버전이 달라지는 것처럼 변경될 수 있습니다.

기본 설정에서, go 명령어는 메인 모듈이나 워크스페이스의 go 또는 toolchain 라인보다 번들된 툴체인이 최신인 경우 번들된 툴체인을 사용합니다. 예를 들어, Go 1.21.3과 함께 제공된 go 명령어를 사용하면서 메인 모듈에 go 1.21.0이 명시되어 있다면, go 명령어는 Go 1.21.3을 사용합니다. 반대로 go 또는 toolchain 라인이 번들된 툴체인보다 최신일 경우, go 명령어는 더 최신 툴체인을 실행합니다. 예를 들어, Go 1.21.3과 함께 제공된 go 명령어를 사용하면서 메인 모듈에 go 1.21.9가 명시되어 있다면, go 명령어는 Go 1.21.9를 찾아 실행합니다. 먼저 PATH에서 go1.21.9라는 프로그램을 찾고, 없으면 Go 1.21.9 툴체인을 다운로드하여 캐시합니다. 이 자동 툴체인 전환 기능은 비활성화할 수 있지만, 이 경우 더 정밀한 전방 호환성을 위해 go 명령어는 go 라인에서 최신 Go 버전을 요구하는 메인 모듈이나 워크스페이스에서 실행을 거부합니다. 즉, go 라인은 모듈이나 워크스페이스를 사용하기 위해 필요한 최소 Go 버전을 설정합니다.

다른 모듈의 종속성으로서의 모듈은 선호하는 툴체인보다 낮은 최소 Go 버전 요구사항을 설정해야 할 수 있습니다. 이 경우 go.mod 또는 go.work 파일의 toolchain 라인이 해당 모듈을 직접 작업할 때 사용하는 선호 툴체인을 설정하며, go 명령어가 사용할 툴체인을 결정할 때 go 라인보다 우선됩니다.

gotoolchain 라인은 모듈의 Go 툴체인 자체에 대한 종속성 버전 요구사항을 지정하는 것으로 생각할 수 있으며, 이는 go.modrequire 라인이 다른 모듈에 대한 종속성 버전 요구사항을 지정하는 것과 같습니다. go get 명령어는 다른 모듈에 대한 종속성을 관리하는 것처럼 Go 툴체인 종속성도 관리합니다. 예를 들어, go get go@latest는 모듈을 최신 릴리스된 Go 툴체인을 요구하도록 업데이트합니다.

GOTOOLCHAIN 환경설정은 gotoolchain 라인을 무시하고 특정 Go 버전을 강제로 사용할 수 있습니다. 예를 들어, Go 1.21rc3로 패키지를 테스트하려면 다음과 같이 실행할 수 있습니다:

GOTOOLCHAIN=go1.21rc3 go test

기본 GOTOOLCHAIN 세팅은 auto이며, 이는 앞서 설명한 툴체인 전환을 활성화합니다. 대체 형식 <name>+auto는 추가적인 전환을 결정하기 전에 기본적으로 사용할 툴체인을 세팅합니다. 예를 들어, GOTOOLCHAIN=go1.21.3+autogo 명령어가 기본적으로 Go 1.21.3을 사용하도록 지시하지만, gotoolchain 라인에 의해 지시된 경우 더 최신 툴체인을 사용할 수 있습니다. 기본 GOTOOLCHAIN 설정은 go env -w로 변경할 수 있기 때문에, Go 1.21.0 이상이 설치되어 있는 경우

go env -w GOTOOLCHAIN=go1.21.3+auto

는 Go 1.21.0 설치를 Go 1.21.3으로 대체하는 것과 동일한 효과를 가집니다.

이 문서의 나머지 부분에서는 Go 툴체인의 버전 지정, 선택 및 관리 방법에 대해 더 자세히 설명합니다.

3 Go 버전[ | ]

4 Go 툴체인 이름[ | ]

5 모듈과 워크스페이스 설정[ | ]

6 GOTOOLCHAIN 세팅[ | ]

7 Go 툴체인 선택[ | ]

8 Go 툴체인 전환[ | ]

9 툴체인 다운로드[ | ]

10 go get으로 Go 버전 모듈 요구사항 관리하기[ | ]

11 go work으로 Go 버전 워크스페이스 요구사항 관리하기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}