Dans mon cas, il n'a été compilé avec succès que de cette façon... Premièrement. Vous devez regarder où se trouve votre GOROOT. Pour voir où il se trouve, utilisez la commande
$ go env
J'ai créé des liens symboliques vers mes répertoires de packages (mes répertoires contenant des fichiers de package situés dans un répertoire où j'écris un code de package principal) Pour créer un lien symbolique, utilisez la commande suivante
$ ln -s
Deuxièmement. Vous devez ajouter tous les nouveaux packages dans votre importation du package principal
import (
"fmt"
"packag1"
"os"
"packag2"
)
et dans la déclaration du nom du package, dans les fichiers de code go, les noms doivent être les mêmes, comme ceci
package packag2
package packag1
les noms des répertoires et des fichiers go doivent être les mêmes noms
$ tree .
.
main
main.go
packag1
packag1.go
packag2
packag2.go
2 répertoires, 4 fichiers
n'oubliez pas de créer des liens symboliques
$ tree /usr/local/go/src/
/usr/local/go/src
packag1 -> /home/user1name/Desktop/someDeskDir/src/packag1
packag2 -> /home/user1name/Desktop/someDeskDir/src/packag2
(Je montre dans ce commentaire uniquement les liens symboliques créés par moi. Dans d'autres cas, dans le répertoire GOROOT, il y aura beaucoup plus de fichiers et de répertoires)
P.S. J'utilise "Ubuntu 22.04.2 LTS", j'installe GO à partir de l'archive go1.20.4.linux-amd64.tar.gz, téléchargée depuis https://go.dev/doc/install Sur d'autres systèmes, il peut y avoir des différences.
RU-RU-RU-RU
... . GOROOT.
$ go env
( , GOROOT. GOROOT )
$ ln -s
. package import main package
import (
"fmt"
"packag1"
"os"
"packag2"
)
package, go ,
package packag2
package packag1
go,
$ tree .
.
main
main.go
packag1
packag1.go
packag2
packag2.go
2 répertoires, 4 fichiers
$ tree /usr/local/go/src/
/usr/local/go/src
packag1 -> /home/user1name/Desktop/someDeskDir/src/packag1
packag2 -> /home/user1name/Desktop/someDeskDir/src/packag2
( , GOROOT )
.. "Ubuntu 22.04.2 LTS" GO https://go.dev/doc/install go1.20.4.linux-amd64.tar.gz .
2 votes
Je rencontre le même problème lorsque je vais chercher github.com/adonovan/gopl.io/tree/master/ch1/helloworld La raison en est qu'il n'y a pas de fichier nommé helloworld.go. go get fonctionne en faisant correspondre le nom du package et le nom du fichier.
0 votes
Il se peut également que vous ayez besoin de mettre à jour Go. J'ai rencontré un problème similaire où j'avais du code existant utilisant go.mod pour définir un module. Sur une machine de test, j'avais téléchargé le code et j'essayais de le compiler mais Go me donnait toutes sortes d'erreurs liées à GOPATH et l'incapacité de trouver des modules. C'était la version Go 1.7. Dès que j'ai mis à jour Go, tout a fonctionné sans problème.
0 votes
Tapez ceci dans le terminal pour une explication à jour
$ go help gopath