go get
hace dos cosas principales en este orden:
La -d
bandera ( go get -d
) indica go get
que se detenga después de descargar los paquetes; es decir, instruye a go get
no hacergo install
la diferencia:
go get
// verificar si los paquetes necesitan ser descargados, descargarlos si es necesario y luego compilarlos
go install
// omita la parte con la descarga de paquetes, solo compile (esto arrojará un error si falta algún paquete)
sobre GOPATH
la variable de entorno
Las GOPATH
herramientas de Go utilizan la variable de entorno. Se debe establecer con el fin de ser capaz de get
, build
yinstall
paquetes, y especifica la ubicación de su espacio de trabajo. Es probable que sea la única variable de entorno que necesitará establecer al desarrollar código Go.
De nuevo, el GOPATH
no debe apuntar a la instalación de Go, sino a su espacio de trabajo.
Por ejemplo, en Windows, si decide que su espacio de trabajo está en c:\gowork\
, deberá establecer el GOPATH
valor comoc:\gowork

Su código fuente debe estar en c:\gowork\src\<some project folder>\
y después de ejecutarlo go get
en el símbolo del sistema desde dentro c:\gowork\src\<some project folder>\
, verá c:\gowork\bin\
y se c:\gowork\pkg\
está creando.
go get ./path/to/local_package
, y se comportaría igual que si lo usarago install ./path/to/local_package
, ¿verdad? Dado que no hay proceso de descarga en este caso.go install
hace que su objetivo sea más explícito, pero supongo que ambos lograrían lo mismo. Probé con algunos paquetes, incluidos los declarados comomain
y parecían equivalentes. Los documentos son muy deficientes en este comando.go get
pero no parago install
. ¿Cómo se relaciona eso con esta descripción?go get
lugar dego install
en su tercer punto, yago get
que no volverá a descargar la biblioteca (a menos que agregue-u
). También puede utilizarlogo get
al escribir una biblioteca desde cero.go install
parece completamente redundante.