Buscar..


Introducción

La compilación condicional basada en la plataforma viene en dos formas en Go, una con sufijos de archivo y la otra con etiquetas de compilación.

Sintaxis

  • Después de " // +build ", puede seguir una sola plataforma o una lista
  • Se puede revertir la plataforma precediéndola por ! firmar
  • Lista de plataformas separadas en el espacio son oradas juntas

Observaciones

Advertencias para las etiquetas de construcción:

  • La restricción de // +build debe colocar en la parte superior del archivo, incluso antes de la cláusula del paquete.
  • Debe ir seguido de una línea en blanco para separarse de los comentarios del paquete.
Lista de plataformas válidas para etiquetas de compilación y sufijos de archivos
androide
Darwin
libélula
Freebsd
linux
netbsd
openbsd
plan9
solaris
ventanas

Consulte la lista de $GOOS en https://golang.org/doc/install/source#environment para obtener la lista de plataformas más actualizada.

Crear etiquetas

// +build linux

package lib

var OnlyAccessibleInLinux int // Will only be compiled in Linux

Niega una plataforma colocando ! antes de eso:

// +build !windows

package lib

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

La lista de plataformas se puede especificar separándolas con espacios

// +build linux darwin plan9

package lib

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

Sufijo de archivo

Si nombra su archivo lib_linux.go , todo el contenido de ese archivo solo se compilará en entornos de Linux:

package lib

var OnlyCompiledInLinux string

Definiendo comportamientos separados en diferentes plataformas.

Diferentes plataformas pueden tener implementaciones separadas del mismo método. Este ejemplo también ilustra cómo las etiquetas de compilación y los sufijos de archivos se pueden usar juntos.

Archivo 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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow