2017-08-29 2 views
0

J'essaie de créer un package de collections dans Go et j'ai des problèmes avec les chemins d'importation.Problèmes de chemin d'accès au package d'importation dans Go

Je modélise l'interface Java Collections. Voici ma structure de fichier

+/$GOPATH 
    /bin 
    /pkg 
    /src 
     /github.com 
      /user 
       /collections 
        collections.go 
        main.go 
        /collections 
         /bstAvl 
         bstAvl.go 

Mon fichier collections.go ressemble à ceci:

package collections 

type Collection interface { 
    Add(interface{}) (bool, error) 
    AddAll(Collection) (bool, error) 
    Clear() 
    Contains(interface{}) (bool, error) 
    Remove(interface{}) (bool, error) 
    Size() uint 
} 

En bstAvl.go je suis en train d'utiliser l'interface Collection dans Collections.go

Comment importer le nécessaire paquet pour accéder à l'interface de collection?

Je pense que je suis allé à la mer avec les chemins, probablement rendu plus compliqué qu'il devrait être. La structure la plus simple est-elle recommandée?

Idéalement, je voudrais que toutes mes collections soient sous le paquet collections afin qu'il puisse être exporté en tant que bibliothèque et utilisé dans d'autres applications si nécessaire.

P.S J'ai lu Structuring applications in Go by Ben Johnson. Mais je suis toujours confus. Toute aide est grandement appréciée.

EDIT: Je suppose que j'ai travaillé sur la structure du paquet. J'ai décidé de rester avec ceci:

+/$GOPATH 
    /bin 
    /pkg 
    /src 
     /github.com 
      /user 
       /collections 
        collections.go 
        main.go 
        bstAvl.go 

Répondre

2

Pour importer collections l'intérieur bstAvl.go, utilisez le chemin complet:

import "github.com/user/collections" 

En ce qui concerne la structure, tout dépend du type de paquet, et Je ne connais pas suffisamment les collections Java pour donner des conseils dans ce cas précis.

Cependant, afin d'éviter une répétition collections/collections, je vous suggère de placer le dossier bstAvl directement sous les premières collections -folder:

+/$GOPATH 
    /bin 
    /pkg 
    /src 
     /github.com 
      /user 
       /collections 
        collections.go 
        main.go 
        /bstAvl 
         bstAvl.go