Quelle est la convention pour organiser les interfaces et leurs implémentations dans un projet Go?Quelle est la convention pour organiser les interfaces et leurs implémentations dans un projet Go?
Je suis nouveau aller et la création d'un petit projet, j'ai actuellement cette structure de dossier:
src/
my-repo/
solve/
backtracksolve.go
permutatesolve.go
...
solver.go
... (some repositories and packages omitted for brevity) ...
backtracksolve
et permutatesolve
à la fois implémenter l'interface solver
il logique de les garder dans le même paquet que le interface et autres implémentations de cette interface, venant de Java/C# c'est une convention commune par exemple, java.util
contient des interfaces telles que Set
, Map
, List
, tout en ayant également des implémentations telles que HashSet
, HashMap
et ArrayList
.
Toutefois, dans Go, car ils implémentent tous les deux un func Solve()
et les deux dans le package solve
il y a redeclared exception
.
Est-ce la convention de créer un sous-répertoire pour chaque implémentation (ci-dessous) ou quelque chose de complètement différent?
src/
my-repo/
solve/
backtrack/
backtracksolve.go
permutation/
permutatesolve.go
solver.go
Peut-être que vous voulez créer deux types 'BacktrackSolver' et' PermuteSolver' qui ont tous deux la méthode 'Solve()'. Cela aiderait contre le conflit de nom. – md2perpe