J'essaie de créer et d'utiliser un package personnalisé dans Go. C'est probablement quelque chose de très évident mais je ne trouve pas beaucoup d'informations à ce sujet. Fondamentalement, j'ai ces deux fichiers dans le même dossier:
mylib.go
package mylib
type SomeType struct {
}
main.go
package main
import (
"mylib"
)
func main() {
}
Lorsque j'essaye go run main.go
, j'obtiens cette erreur:
main.go:4:2: import "mylib": cannot find package
J'ai essayé de courir en go build mylib.go
premier mais il ne semble rien faire (aucun fichier généré, aucun message d'erreur). Alors une idée de comment je pourrais faire ça?
go install
sous le répertoire demylib
first et réessayez.Réponses:
Tout d'abord, assurez-vous de lire et de comprendre le document «Comment écrire du code Go» .
La réponse réelle dépend de la nature de votre "package personnalisé".
S'il est destiné à un usage général, envisagez d'utiliser ce que l'on appelle la "disposition de code Github" . En gros, vous faites de votre bibliothèque un
go get
projet -table séparé .Si votre bibliothèque est à usage interne, vous pouvez procéder comme suit:
Démontrer:
Maintenant, au niveau supérieur
main.go
, vous pourriezimport "myproject/mylib"
et cela fonctionnerait bien.la source
mylib
dans le code demyproject2
? Ensuite, la réponse est "en utilisantimport "myproject/mylib"
- l'idée est que Go recherche les chemins importés sous chaque répertoire qu'il extrait de laGOPATH
variable d'environnement (ils sont appelés" espaces de travail "), mais cette recherche n'est (heureusement) pas récursive, donc ces chemins sont effectivement "ancrés" à leurs espaces de travail respectifs.go mod
développements récents , un module peut être la réponse (etgo mod
prend également en charge la vente de modules).Pour ce type de structure de dossiers:
Le moyen le plus simple est d'utiliser ceci:
la source
foo/mylib
(en supposant que le dossier contenant main.go estfoo
).go install
pause. Si vous créez un projet autonome que vous voulez que les gens téléchargent et exécutentgo build
, c'est très bien - cependant, j'utiliserais la "disposition de code Github" mentionnée ci-dessus (même si elle est hors bitbucket, ou similaire) si vous voulez unego install
assistance complète .Pour un projet hébergé sur GitHub, voici ce que les gens font habituellement :
mylib.go
main.go
la source
Je suis un programmeur expérimenté, mais assez nouveau dans le monde de Go! Et j'avoue avoir rencontré peu de difficultés pour comprendre Go ... J'ai rencontré ce même problème en essayant d'organiser mes fichiers go dans des sous-dossiers. La façon dont je l'ai fait:
GO_Directory (celui affecté à $ GOPATH)
Sur le fichier MyProject \ Entities \ Fiboo \ Client.go
sur le fichier MyProject \ main.go
(J'utilise Go 1.9 sur Ubuntu 16.04)
Et rappelez-vous les gars, je suis novice sur Go. Si ce que je fais est une mauvaise pratique, faites-le moi savoir!
la source
une autre solution:
ajouter
src/myproject
à $ GOPATH.Ensuite
import "mylib"
compilera.la source
J'essaye tellement de manières mais la meilleure j'utilise go.mod et mets
puis j'importe du même projet que j'utilise
C'est très utile de créer un projet n'importe où
la source