Go
Ontwikkelen voor meerdere platforms met voorwaardelijke compilatie
Zoeken…
Invoering
Voorwaardelijk compileren op platform is er in Go in twee vormen, één met achtervoegsels en de andere met build-tags.
Syntaxis
- Na "
// +build
" kan een enkel platform of een lijst volgen - Platform kan worden teruggezet door vooraf te gaan door
!
teken - Lijst van door spaties gescheiden platforms wordt samen geordend
Opmerkingen
Voorbehoud voor build-tags:
- De
// +build
beperking moet bovenaan het bestand worden geplaatst, zelfs vóór de pakketclausule. - Het moet worden gevolgd door één lege regel om te scheiden van pakketopmerkingen.
Lijst met geldige platforms voor zowel build-tags als bestands-achtervoegsels |
---|
android |
darwin |
libel |
freebsd |
linux |
NetBSD |
openbsd |
plan9 |
solaris |
ramen |
Raadpleeg de $GOOS
lijst op https://golang.org/doc/install/source#environment voor de meest actuele platformlijst.
Bouw tags
// +build linux
package lib
var OnlyAccessibleInLinux int // Will only be compiled in Linux
Ontken een platform door te plaatsen !
voor het:
// +build !windows
package lib
var NotWindows int // Will be compiled in all platforms but not Windows
Lijst met platforms kan worden opgegeven door ze te scheiden met spaties
// +build linux darwin plan9
package lib
var SomeUnix int // Will be compiled in linux, darwin and plan9 but not on others
Bestand achtervoegsel
Als u uw bestand lib_linux.go
, wordt alle inhoud in dat bestand alleen in Linux-omgevingen gecompileerd:
package lib
var OnlyCompiledInLinux string
Afzonderlijk gedrag definiëren op verschillende platforms
Verschillende platforms kunnen afzonderlijke implementaties van dezelfde methode hebben. Dit voorbeeld illustreert ook hoe build-tags en achtervoegsels samen kunnen worden gebruikt.
Bestand 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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow