Soy un novato en Golang y estoy tratando de usar Gin para desarrollar un servidor web en Ubuntu 16.04.
Después de ejecutar go get -u github.com/gin-gonic/gin , aparecen muchas carpetas en ~/go/pkg/mod/github.com/ .
Luego trato de hacer un ejemplo:
package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080") } Sin embargo, go run example.go cometió el error:
example.go:3:8: cannot find package "github.com/gin-gonic/gin" in any of: /usr/local/go/src/github.com/gin-gonic/gin (from $GOROOT) /home/zyh/go/src/github.com/gin-gonic/gin (from $GOPATH) En mi sistema, $GOROOT es /usr/local/go/ y $GOPATH es ~/go/ .
¿Cómo podría solucionar este problema?
A partir del error, puede ver que GOPATH es su '/home/zyh/go', no su ~/go. y puede ejecutar shell go env para confirmar dónde está su GOPATH? luego modificarlo.
Para Go versión 1.11 o posterior, debe usar Go Modules .
Si recién está comenzando con Go, debe comenzar con la versión más nueva. Creo que está utilizando una versión Go que ya admite módulos go porque los módulos que está tratando de obtener se están descargando en el directorio ~/go/pkg/mod/ .
go mod init your-project-name Esto creará un archivo go.mod en el directorio de su proyecto.
go mod tidy Esto llenará el archivo go.mod con los módulos apropiados y creará un go.sum en el directorio de su proyecto. El go.sum contiene los hashes criptográficos esperados de cada versión del módulo.
Después de eso, el comando go run example.go debería ejecutar el programa sin ningún problema.
go mod vendor Esto traerá a todos los proveedores a su directorio de proyectos /vendor para que no necesite obtener los módulos nuevamente si trabaja desde otra máquina en este proyecto.