Go
조건부 컴파일을 사용하여 여러 플랫폼 개발
수색…
소개
플랫폼 기반 조건부 컴파일은 Go에 두 가지 형식으로 제공됩니다. 하나는 파일 접미사이고 다른 하나는 빌드 태그입니다.
통사론
- "
// +build
"이후에는 단일 플랫폼 또는 목록을 따를 수 있습니다. - 선행하는대로 플랫폼을 되돌릴 수 있습니다
!
기호 - 공간으로 분리 된 플랫폼 목록은 함께 OR됩니다
비고
빌드 태그에 대한주의 사항 :
-
// +build
제약 조건은 package 절보다 먼저 파일의 맨 위에 위치해야합니다. - 패키지 주석과 분리하려면 빈 줄이 하나 있어야합니다.
빌드 태그와 파일 접미사 모두에 유효한 플랫폼 목록 |
---|
기계적 인조 인간 |
다윈 |
잠자리 |
freebsd |
리눅스 |
netbsd |
openbsd |
계획 9 |
솔라리스 |
창문들 |
가장 최신 플랫폼 목록은 https://golang.org/doc/install/source#environment의 $GOOS
목록을 참조 하십시오.
태그 작성
// +build linux
package lib
var OnlyAccessibleInLinux int // Will only be compiled in Linux
배치하여 플랫폼을 부정합니다 !
그 전에 :
// +build !windows
package lib
var NotWindows int // Will be compiled in all platforms but not Windows
플랫폼 목록은 공백으로 구분하여 지정할 수 있습니다.
// +build linux darwin plan9
package lib
var SomeUnix int // Will be compiled in linux, darwin and plan9 but not on others
파일 접미사
lib_linux.go
파일의 이름을 지정하면 해당 파일의 모든 내용은 Linux 환경에서만 컴파일됩니다.
package lib
var OnlyCompiledInLinux string
다른 플랫폼에서 별도의 비헤이비어 정의
서로 다른 플랫폼은 동일한 메소드를 별도로 구현할 수 있습니다. 또한이 예제는 빌드 태그와 파일 접미사를 함께 사용할 수있는 방법을 보여줍니다.
main.go
파일 :
package main
import "fmt"
func main() {
fmt.Println("Hello World from Conditional Compilation Doc!")
printDetails()
}
details.go
:
// +build !windows
package main
import "fmt"
func printDetails() {
fmt.Println("Some specific details that cannot be found on Windows")
}
details_windows.go
:
package main
import "fmt"
func printDetails() {
fmt.Println("Windows specific details")
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow