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:

  • // +build begrä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