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 peux pas trouver beaucoup d'informations à ce sujet. En gros, 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'essaie de go run main.go
, j'obtiens cette erreur:
main.go:4:2: import "mylib": cannot find package
J'ai essayé d'exécuter go build mylib.go
en premier mais cela ne semble rien faire (pas de fichier généré, pas de message d'erreur). Donc, une idée de comment je pourrais faire ça?
Tout d’abord, assurez-vous de lire et de comprendre le "Comment écrire du code Go" document.
La réponse dépend de la nature de votre "package personnalisé".
S'il est destiné à une utilisation générale, envisagez d'utiliser le soi-disant "Mise en page du code Github" . En gros, vous faites de votre bibliothèque un projet séparé go get
- table.
Si votre bibliothèque est à usage interne, vous pouvez choisir ceci:
Démontrer:
src/
myproject/
mylib/
mylib.go
...
main.go
Maintenant, dans le main.go
de niveau supérieur, vous pourriez import "myproject/mylib"
et tout irait bien.
Pour ce type de structure de dossier:
main.go
mylib/
mylib.go
Le moyen le plus simple est d'utiliser ceci:
import (
"./mylib"
)
Pour un projet hébergé sur GitHub, voici ce que les gens font habituellement:
github.com/
laike9m/
myproject/
mylib/
mylib.go
...
main.go
mylib.go
package mylib
...
main.go
import "github.com/laike9m/myproject/mylib"
...
une autre solution:
Ajoutez src/myproject
à $ GOPATH.
Alors import "mylib"
sera compilé.
Je suis un programmeur expérimenté, mais assez nouveau dans le monde de Go! Et j’avoue que j’ai rencontré peu de difficultés à comprendre Go… J’ai fait face au même problème lorsque j’essayais d’organiser mes fichiers go dans des sous-dossiers . Comme je l’ai fait:
GO_Directory (celui assigné à $ GOPATH)
GO_Directory //the one assigned to $GOPATH
__MyProject
_____ main.go
_____ Entites
_____ Fiboo // in my case, fiboo is a database name
_________ Client.go // in my case, Client is a table name
Sur le fichier MyProject\Entities\Fiboo\Client.go
package Fiboo
type Client struct{
ID int
name string
}
dans le fichier MyProject\main.go
package main
import(
Fiboo "./Entity/Fiboo"
)
var TableClient Fiboo.Client
func main(){
TableClient.ID = 1
TableClient.name = 'Hugo'
// do your things here
}
(J'exécute Go 1.9 sur Ubuntu 16.04)
Et rappelez-vous les gars, je suis débutant sur Go. Si ce que je fais est une mauvaise pratique, faites le moi savoir!
forfait lexico
type Analizador struct {
}
func main() {
}
En la classe Package main
import (
"github.com/user/lexico
)