Go (Español)

Go es un lenguaje de tipado estático con una sintaxis ligeramente derivada de la de C, añadiendo gestión de memoria con recolector de basura, seguridad de tipado, algunas capacidades de tipado dinámico, tipados adicionales incorporados como arrays de longitud variable y mapas clave-valor, y una gran librería estándar.

Esta traducción de Go fue revisada el 2021-02-09. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Instalación

El compilador estándar de Go es go, el cual se puede instalar desde el paquete go. La orden go también incluye varias herramientas como go get, go doc, etc. Una alternativa es gcc-go, que se trata de un frontend de Go para la colección de compiladores GNU (GCC). En algunos casos gccgo puede realizar mejores optimizaciones. En caso de duda, utilice go.

Un paquete adicional que la mayoría de los desarrolladores de Go querrán instalar es go-tools. Esto proporciona varias herramientas de uso común que facilitarán el trabajo con Go, como , , , etc.

Probar la instalación

Puede comprobar que Go se ha instalado correctamente compilando un programa relativamente sencillo, como el que se muestra a continuación:

Posteriormente, ejecútelo con la herramiento go:

$ go run hello.go
Hola, Arch!

Compilación con el compilador estándar gc (lo mismo que ):

$ go build hello.go

Compilación con gccgo (lo mismo que go build -compiler=gccgo hello.go):

$ gccgo hello.go -o hello

$GOPATH

Go espera que el código fuente se halle dentro de , el cual se establece por defecto en .

Cree el espacio de trabajo:

$ mkdir -p ~/go/src

El directorio se utiliza para almacenar las fuentes de los paquetes. Al compilar, Go también creará para los ejecutables y para almacenar los paquetes individuales. Probablemente quiera añadir a la variable de entorno para ejecutar Go:

export PATH="$PATH:$HOME/go/bin"

Ejecute la orden go help gopath para obtener más información.

Compilación cruzada a otras plataformas

La orden go puede compilar de forma nativa a un número de plataformas.

Si cgo no es necesario para la compilación, entonces simplemente especifique el sistema operativo de destino y la arquitectura como variables de entorno a :

$ GOOS=linux GOARCH=arm64 go build .

Véase la documentación oficial para las posibles combinaciones de y $GOARCH.

Por otro lado, si se requiere de cgo para la compilación, se tiene que proporcionar la ruta a sus compiladores cruzados , a través de las variables de entorno .

Supongamos que desea compilar para y .

Primero necesita instalar el compilador cruzado .

He aquí hay un programa de ejemplo que requiere cgo, para que podamos probar el proceso de compilación cruzada:

$ cat > hello.go <<EOF
package main

// #include <stdio.h>
// void hello() {  puts("Hola, Arch!"); }
import "C"

func main() { C.hello() }
EOF

Después, puede realizar compilación cruzada así:

$ GOOS=linux GOARCH=arm64 CGO_ENABLED=1 CC=/usr/bin/aarch64-linux-gnu-gcc go build hello.go

Puede comprobar que la arquitectura del binario generado es realmente :

$ file hello
hello: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=b1d92ae8840a019f36cc2aee4606b6ae4a581bf1, for GNU/Linux 3.7.0, not stripped

Si copia a un host adecuado, puede probar a ejecutarlo:

[alarm@rpi3 ~]$ uname -a
Linux alarm 5.3.8-1-ARCH #1 SMP Tue Oct 29 19:31:23 MDT 2019 aarch64 GNU/Linux
[alarm@arpi3 ~]$ ./hello
Hola, Arch!

Solución de problemas

Plugin Go Jetbrains

Si está usando un IDE Jetbrains y el plugin Go no puede encontrar su ruta de Go SDK, puede que esté usando un paquete incompatible. Elimine el paquete y reemplácelo por go. Si su está configurado, el IDE debería entonces ser capaz de encontrar su Go SDK en .

Véase también

gollark: Much better than the typical crazy DSLs in Excel.
gollark: I found a cool thing which lets you write spreadsheets with the (programming language) Haskell recently.
gollark: *s p r e a d s h e e t s*
gollark: Then make a list, silly.
gollark: I imagine a simple to-do list/notes thing would work.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.