Entorno Go
Tiempo de lectura: 2 minutos
Sobre el entorno Go y las variables de entorno
Paquetes instalados
El comando go get instala los paquetes en el directorio definido por la variable de entorno %GOPATH%. En el caso que no esté definida, se utiliza la variable %HOME%/go.
Los ejecutables se ubican en el directorio %GOPATH%/bin o en %HOME%/go/bin. si no está definida la primera.
Adicionalmente están los directorios pkg, para los paquetes compilados, y src, donde debe ir todo el código fuente, aunque esto depende de la estructura del proyecto.
Ubicación del proyecto
Lo estándar sería poner el proyecto en esta ruta para que esté disponible para la herramienta go get:
$GOPATH/src/domain.com/username/project Variables de entorno
El comando go env lista las variables de entorno que se están utilizando en el entorno de Go.
Modificar una variable
Las variables de entorno se pueden leer o modificar utilizando funciones predefinidas en el paquete os
os.Setenv("VAR_1", "1")
fmt.Println("VAR_1:", os.Getenv("VAR_1")) Principales variables
hay una serie de variables de entorno que determinan cómo será el binario resultante de una compilación, por ejemplo, y que también configuran el entorno de desarrollo. las principales las podemos agrupar en varias categorías:
Compilador
GOARCH. Indica la arquitectura del sistema de destino para el cual se quiere compilar el código Go.
GOOS. La variable de entorno GOOS le dice al compilador Go en qué sistema operativo de destino desea que se ejecute el código.
GOROOT. La variable de entorno GOROOT señala el directorio raíz donde se encuentra la instalación de Go, no los archivos de proyecto. Este directorio contiene componentes esenciales como el compilador de Go, los paquetes de la biblioteca estándar y las herramientas.
GOMAXPROCS. Desempeña un papel crucial en la gestión de la concurrencia de Go. Determina la cantidad máxima de subprocesos del sistema operativo y, por lo tanto, potencialmente, núcleos de CPU, que pueden ejecutar código Go simultáneamente en un momento determinado.
Compilación C
Para ver la compilación en C revisa el post relacionado con las llamadas a C desde Go
CGO_ENABLED. La variable de entorno CGO_ENABLED actúa como un interruptor para Cgo, una potente característica de Go que permite interacciones entre Go y el código C. Tiene los valores 0, deshabilitado, o 1, habilitado.
CGO_CFLAGS. Permite ajustar el proceso de compilación del código C integrado con tu proyecto Go mediante Cgo. Te permite inyectar indicadores personalizados directamente en la invocación del compilador C, por ejemplo, las rutas de acceso a las bibliotrcas en C.
CGO_LDFLAGS. Proporciona una manera de influir en la etapa final de vinculación al usar Cgo para integrar código C en tus proyectos Go. Te permite pasar indicadores personalizados directamente al enlazador (linker). Por ejemplo, bibliotecas de C externas.
Colector de basura
GOCG. La variable de entorno GOGC permite ajustar el comportamiento de la recolección automática de basura de Go. Principalmente controla la frecuencia de los ciclos de recolección de basura. Los valores son: off, para deshabilitarlo, default para recuperar el comportamiento por defecto y un valor numérico que representa un porcentaje del crecimiento de la pila (heap) que indica cuándo se ejecuta el recolector.