web-dev-qa-db-fra.com

Comment utiliser les paquets personnalisés dans golang?

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?

155
this.lau_

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:

  1. Placez le répertoire contenant les fichiers de bibliothèque sous le répertoire de votre projet.
  2. Dans le reste de votre projet, reportez-vous à la bibliothèque en utilisant son chemin d'accès par rapport à la racine de votre espace de travail contenant le projet.

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.

149
kostix

Pour ce type de structure de dossier:

main.go
mylib/
  mylib.go

Le moyen le plus simple est d'utiliser ceci:

import (
    "./mylib"
)
52
this.lau_

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"

...
6
laike9m

une autre solution:
Ajoutez src/myproject à $ GOPATH.

Alors import "mylib" sera compilé.

3
Helin Wang

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!

2
Diego Favero

forfait lexico

type Analizador struct {

}

func main() {

}

En la classe Package main

import (

    "github.com/user/lexico
)
0
Hexagendedor