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
// +buildbeperking 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