Estoy probando el nuevo sistema de módulos de Go y tengo problemas para acceder a los paquetes locales. El siguiente proyecto está en una carpeta en mi escritorio fuera de mi gopath.
La estructura de mi proyecto se ve así:
/
- /platform
- platform.go
- main.go
- go.mod
// platform.go
package platform
import "fmt"
func Print() {
fmt.Println("Hi")
}
// main.go
package main
import "platform"
func main() {
platform.Print()
}
go build main.go me dice
cannot find module for path platform

Respuestas:
Le sugiero encarecidamente que utilice go toolchain, que se encarga de estos problemas de forma inmediata. Visual Studio Code con el complemento vscode-go es realmente útil.
El problema aquí es que Go requiere rutas relativas con respecto a su declaración de importación
$GOPATH/srcomodule. Dependiendo de dónde se encuentreGOPATH, la ruta de importación también debe incluir eso. En este caso, la declaración de importación debe incluir la ruta del módulo go engo.modGOPATH
Suponga que su proyecto reside aquí:
Su ruta de importación debe ser:
import "github.com/myuser/myproject/platform"VGO
Suponga que su archivo go.mod es:
Su ruta de importación debe ser:
import "example.com/myuser/myproject/platform"fuente
go.modarchivo en el disco, siempre que las rutas de importación sean rutas de importación completas que comiencen con el nombre del módulo (por ejemplo,import "github.com/my/module/pkg"`) . Si desea encontrar paquetes en otros módulos que se encuentran en otra parte de su disco, entonces es allí donde entra una directiva de reemplazo . Esta respuesta cubre más sobre la estructura del módulo y las rutas de importación.Permítanme definir esto primero
modulesson colecciones depackages. En Go 11, uso módulos go como los siguientes:Si ambos paquetes están en el mismo proyecto, puede hacer lo siguiente: En
go.mod:module github.com/userName/moduleNamey dentro de tu
main.goimport "github.com/userName/moduleName/platform"Sin embargo, si son módulos separados, es decir, diferentes rutas físicas y aún desea importar local
packagessin publicar esto de forma remota en github, por ejemplo, puede lograr esto usando lareplacedirectiva.Dado el nombre del módulo
github.com/otherModuleyplatform, como lo ha llamado, es el único paquete que contiene. En su módulo principalgo.modagregue las siguientes líneas:module github.com/userName/mainModule require "github.com/userName/otherModule" v0.0.0 replace "github.com/userName/otherModule" v0.0.0 => "local physical path to the otherModule"Nota: La ruta debe apuntar al directorio raíz del módulo y puede ser absoluta o relativa.
En el interior
main.go, para importar un paquete específico comoplatformdesdeotherModule:import "github.com/userName/otherModule/platform"Aquí hay una breve introducción a los módulos de Golang
fuente