SOO Go Subpackage Naming

时间:2016-03-09 08:20:46

标签: go package

我正在将一个大型Web应用程序移植到Go。为了管理复杂性并提高可测试性,我们采用面向服务的体系结构。我试图找出最清楚的方法来命名和构造包,使得任何服务都不知道另一个实现,并且我可以在应用程序级别区分它们。请允许我举个例子:

FooService接口

package api

type FooService interface {
    foo()
}

FooService实施

package implementation

import (
    "fmt"
    _ "github.com/user/foo/api"
)

type FooImplementation struct {
}

func (self FooImplementation) foo() {
    fmt.Println("foo")
}

在我的应用程序中,我需要将此实现绑定到接口以及许多其他接口。但它们都不能被命名为api / implementation。我是否也将软件包命名为fooapi和fooimplementation?或者有更好的方法来构建我的应用程序? 谢谢!

1 个答案:

答案 0 :(得分:0)

我发现了一个潜在的解决方法,但我不打算将其标记为关闭,因为它并不理想。我发现您可以命名导入以消除具有相同名称的包的歧义。 E.g。

import (
fapi "github.com/user/foo/api"
fimplementation "github.com/user/foo/implementation"
)