> 백엔드 개발 > Golang > `//go:build vs // build: Go에서 어떤 조건부 컴파일 지시어를 사용해야 할까요?`

`//go:build vs // build: Go에서 어떤 조건부 컴파일 지시어를 사용해야 할까요?`

Patricia Arquette
풀어 주다: 2024-12-10 11:08:18
원래의
266명이 탐색했습니다.

`//go:build vs //  build: Which Conditional Compilation Directive Should You Use in Go?`

//go:build vs // build: 조건부 컴파일의 새로운 시대

딜레마

다음을 고려하세요. 다음 Go 코드 조각:

//go:build (386 || amd64 || amd64p32) && gccgo
// +build 386 amd64 amd64p32
// +build gccgo

package cpu
로그인 후 복사

빌드로 태그, // 빌드가 충분해 보였습니다. //go:build가 명시적으로 지정된 이유는 무엇입니까? //build에 광범위한 문서가 있는데 왜 //go:build에 대한 문서를 찾기 어려운가요?

Go 1.18: A New Path

새로운 지시어 / /go:build는 이제 선호되는 조건부 컴파일 접근 방식이며 툴체인은 오래된 // 빌드 지시문을 적극적으로 제거합니다.

Go 1.17: //go:build

//go:build 소개는 Go 1.17에서 // build를 대체하기 위해 도입되었습니다. 여러 가지 장점을 제공합니다.

  • 다른 Go 지시문과의 일관성(예: //go:generate)
  • 명시적 부울 표현식 지원(예: //go:build foo && bar)
  • 지시문을 자동으로 수정하는 Go fmt 호환성 배치

공존 및 전환

두 지시어는 원활한 전환을 위해 공존합니다.

구문 변경 및 호환성

  • Go 빌드 //go:build가 // build
  • //go:build 단독으로 실행되는 것은 더 이상 빌드 실패가 아닙니다
  • 잘못 배치된 //go:build 지시문이 감지되어 이동됩니다
  • Go fmt는 //go:build 표현식을 수정합니다
  • Gofmt는 build가 //인 경우에만 //go:build를 추가합니다. 현재
  • Gofmt는 //go:build와 일치하도록 // 빌드를 업데이트합니다
  • Go vet는 //go:build와 // build 사이의 불일치를 확인합니다

앞으로 나아가기

//go:build는 조건부 컴파일에 권장되는 접근 방식입니다. 가다. 향상된 구문, Go fmt 호환성 및 // 빌드와의 공존을 통해 Go 개발의 미래로 원활하게 전환할 수 있습니다.

위 내용은 `//go:build vs // build: Go에서 어떤 조건부 컴파일 지시어를 사용해야 할까요?`의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿