在Go項目中組織接口及其實現的約定是什麼?在Go項目中組織接口及其實現的約定是什麼?
我是新來的你去創造一個小項目,我現在有這個文件夾結構:
src/
my-repo/
solve/
backtracksolve.go
permutatesolve.go
...
solver.go
... (some repositories and packages omitted for brevity) ...
backtracksolve
和permutatesolve
都實現接口solver
所以它有意義,讓他們在同一個包中接口以及來自Java/C#的這種接口的其他實現,這是一種常見的慣例,例如,java.util
包含諸如Set
,Map
,List
的接口,同時還具有諸如HashSet
,HashMap
和ArrayList
。
但是在Go中,因爲它們都執行func Solve()
,並且在package solve
中都有redeclared exception
。
是爲每個實現(下面)創建一個子目錄還是完全不同的東西?
src/
my-repo/
solve/
backtrack/
backtracksolve.go
permutation/
permutatesolve.go
solver.go
也許你想創建兩種'BacktrackSolver'和'PermuteSolver',它們都有方法'Solve()'。這將有助於抵制名稱衝突。 – md2perpe