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