Je crée un projet Go avec la version 1.12.1. Si j'exécute GOPATH="$(pwd)/vendor:$(pwd)" GOBIN="$(pwd)/bin" go clean
Je reçois l'erreur suivante:
can't load package: package github.com/marvincaspar/go-example: unknown import path "github.com/marvincaspar/go-example": cannot find module providing package github.com/marvincaspar/go-example
Ceci est seulement pour go clean
, go run
ou alors go build
fonctionne bien.
Voici la structure de dossiers du code principal:
.
├── Makefile
├── cmd
│ └── server
│ └── main.go
├── go.mod
├── go.sum
└── pkg
└── storage
└── mysql
└── storage.go
Voici comment la go.mod
Le fichier ressemble à:
module github.com/marvincaspar/go-example
go 1.12
require (
github.com/go-sql-driver/mysql v1.4.1
)
Et enfin le main.go
fichier:
package main
import (
"fmt"
"os"
"github.com/marvincaspar/go-example/pkg/storage/mysql"
)
func main() {
if err := run(); err != nil {
fmt.Fprintf(os.Stderr, "%v", err)
os.Exit(1)
}
}
func run() error {
// init storage
s := mysql.NewStorage()
// do some other stuff...
}
Des idées ce que je fais mal?
Normalement, cette nouvelle approche du projet fonctionne pour moi:
go mod init <project_name>
go test
J'ai constaté que les projets en dehors de Goroot et de GoPath sont beaucoup plus faciles