Saltar al contenido

¿Alguien puede explicar por qué GOPATH es conveniente y cómo se debe usar en general?

Solución:

El objetivo de la GOPATH es centralizar todos los paquetes en un espacio de trabajo común. No es realmente un concepto nuevo en sí mismo (piense en Java Classpath, por ejemplo), pero el uso de Go es drásticamente más simple al no admitir el control de versiones de paquetes.

Se supone que el programador de Go no debe configurar GOPATH manualmente al ingresar a una nueva carpeta de proyecto. Se supone que cada carpeta de proyecto es un paquete en sí mismo y reside en el GOPATH junto con otros paquetes, por lo que GOPATH debe configurarse solo una vez. Los tutoriales comienzan configurando el GOPATH para aislar el espacio de trabajo del tutorial de cualquier otra cosa (o simplemente asumiendo que un usuario no ha configurado el GOPATH, todavía).

GOROOT está configurado para proporcionar los paquetes estándar al programador de Go, no es necesario que haga nada con él. En resumen, hay una sola regla para GOROOT: nunca, nunca, lo toques. No instale nada en él, no modifique los paquetes estándar, etc.

No conozco una herramienta para detectar proyectos de Go en el directorio actual, pero no debería ser muy complejo de crear.

La forma en que maneja los diferentes proyectos depende de usted. La forma de Go es poner cada proyecto como un paquete en el $GOPATH/src directorio y hacer todo desde allí. Como no me gusta mucho, definí mi GOPATH ser $HOME/.go. Luego coloco cada proyecto en un directorio dedicado en otro lugar (en cualquier lugar de mi computadora) y enlace simbólicamente el directorio del proyecto en mi $GOPATH/src dir. Luego puedo usar todos los comandos de la cadena de herramientas de Go (p. Ej. go build myproject), usar el proyecto como paquete para otro, etc.

GOPATH le permite recopilar código fuente de dependencia y los binarios compilados resultantes en un solo lugar. Parece una idea realmente atractiva. Sin embargo, me encontré trabajando en varios proyectos de Go totalmente ajenos y un enfoque alternativo me convenía mejor.

Esta es una estrategia similar pero diferente a los símbolos simbólicos de Elwinar. Empiezo un nuevo proyecto en una carpeta vacía y creo src. Y dejo caer en la carpeta este script de shell llamado env.sh:

if [ `type -p go` = "" ]; then
    export PATH=$PATH:/usr/local/go/bin
fi
export GOPATH=$PWD
export PATH=$PATH:$PWD/bin

Cada vez que comienzo a trabajar, uso

. env.sh

Tenga en cuenta el punto y el espacio: son importantes.

Ahora, todo lo que hago en este proyecto está localizado dentro de esta carpeta. Posiblemente no sea la estrategia más utilizada, pero me funciona bien.

Y otra cosa: si sus dependencias hacen uso de variables de entorno para pruebas, etc., puede ponerlas en env.sh también. Por ejemplo, Gorp tiene

export GORP_TEST_DSN=test/testuser/TestPasswd9
export GO_TEST_DSN=testuser:[email protected]/test

Apéndice

En las versiones de Go más recientes, GOPATH es opcional; si no lo configura, el valor predeterminado es $ HOME / go. Si lo configura y también desea utilizar la función de nuevos módulos, configure GO111MODULES=on además.

No es necesario configurar su GOPATH o GOROOT. GOPATH por defecto se encuentra en su directorio de usuario / inicio.

Si no se establece GOPATH, se asume que es $ HOME / go en sistemas Unix y% USERPROFILE% go en Windows. Si desea utilizar una ubicación personalizada como su espacio de trabajo, puede configurar la variable de entorno GOPATH.


Ir a módulos

Aparte de esto, ahora hay compatibilidad con los módulos Go (desde Go 1.11), por lo que ya no tiene que usar GOPATH. Sin embargo, esta sigue siendo una característica experimental.

Por ejemplo, puede ir a cualquier directorio de su sistema (fuera de $ GOPATH) y puede inicializar un nuevo módulo Go allí y trabajar allí. No se necesita GOPATH.

Solo necesitas hacer esto una vez (mientras estás en un directorio):

go mod init

$ GOPATH: Go almacena estos archivos debajo:

  • Archivos de origen ($ GOPATH / src)

  • Archivos de paquetes compilados ($ GOPATH / pkg)
  • Archivos ejecutables ($ GOPATH / bin)

$ GOROOT: Es el lugar donde reside el código fuente de Go, como la biblioteca estándar de Go.


También para ejecutar cualquier go installed archivo ejecutable desde cualquier lugar de su sistema, es posible que desee agregar $GOPATH/bin a la variable de entorno de su ruta como esta:

export PATH=$PATH:$(go env GOPATH)/bin

Más información, mira esto.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *