Go
Utveckling för flera plattformar med villkorlig sammanställning
Sök…
Introduktion
Plattformsbaserad villkorlig kompilering finns i två former i Go, en är med filsuffix och den andra är med build taggar.
Syntax
- Efter "
// +build" kan en plattform eller en lista följa - Plattformen kan återställas genom att föregås av den
!tecken - Lista med utrymme-separerade plattformar ORSeras tillsammans
Anmärkningar
Varningar för att bygga taggar:
-
// +buildbegränsningen måste placeras högst upp i filen, även före paketklausul. - Det måste följas av en tom rad för att separera från paketkommentarer.
| Lista över giltiga plattformar för både build-taggar och filsuffix |
|---|
| android |
| darwin |
| trollslända |
| freebsd |
| linux |
| NetBSD |
| openbsd |
| plan9 |
| solaris |
| fönster |
Se listan över $GOOS i https://golang.org/doc/install/source#en $GOOS för den mest uppdaterade plattformslistan.
Bygg taggar
// +build linux
package lib
var OnlyAccessibleInLinux int // Will only be compiled in Linux
Negera en plattform genom att placera ! före det:
// +build !windows
package lib
var NotWindows int // Will be compiled in all platforms but not Windows
Lista över plattformar kan specificeras genom att separera dem med mellanslag
// +build linux darwin plan9
package lib
var SomeUnix int // Will be compiled in linux, darwin and plan9 but not on others
File suffix
Om du lib_linux.go din fil lib_linux.go kommer allt innehåll i den filen endast att kompileras i linuxmiljöer:
package lib
var OnlyCompiledInLinux string
Definiera separata beteenden på olika plattformar
Olika plattformar kan ha separata implementationer av samma metod. Detta exempel illustrerar också hur build-taggar och filsuffix kan användas tillsammans.
Fil 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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow