Ricerca…


introduzione

La compilazione condizionale basata su piattaforma è disponibile in due formati in Go, uno con suffissi file e l'altro con tag build.

Sintassi

  • Dopo " // +build ", può seguire una singola piattaforma o un elenco
  • La piattaforma può essere ripristinata precedendola con ! cartello
  • Elenco di piattaforme separate dallo spazio sono ORed insieme

Osservazioni

Avvertenze per i tag di costruzione:

  • Il // +build constraint deve essere posizionato all'inizio del file, anche prima della clausola del pacchetto.
  • Deve essere seguito da una riga vuota per separare i commenti del pacchetto.
Elenco di piattaforme valide per entrambi i tag di costruzione e i suffissi dei file
androide
Darwin
libellula
FreeBSD
linux
NetBSD
openbsd
plan9
solaris
finestre

Fare riferimento all'elenco $GOOS in https://golang.org/doc/install/source#environment per l'elenco delle piattaforme più aggiornato.

Costruisci tag

// +build linux

package lib

var OnlyAccessibleInLinux int // Will only be compiled in Linux

Annulla una piattaforma posizionando ! prima di cio:

// +build !windows

package lib

var NotWindows int // Will be compiled in all platforms but not Windows

L'elenco delle piattaforme può essere specificato separandole con spazi

// +build linux darwin plan9

package lib

var SomeUnix int // Will be compiled in linux, darwin and plan9 but not on others

Suffisso file

Se dai il nome al tuo file lib_linux.go , tutto il contenuto di quel file sarà compilato solo in ambienti Linux:

package lib

var OnlyCompiledInLinux string

Definire comportamenti separati in piattaforme diverse

Diverse piattaforme possono avere implementazioni separate dello stesso metodo. Questo esempio illustra anche come possono essere utilizzati insieme tag di costruzione e suffissi di file.

File 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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow