为项目使用多个软件包而不是单个软件包

时间:2018-10-12 20:14:16

标签: go package

我有一个基本的go项目结构,如下所示:

src/github.com/jeeves/my-project/
    |- main.go
    |- models/
        |- user.go

main.go的内容为-

package main

var log = initializeLogger()

func main() {

    // do stuff

}

func initializeLogger() *logging.Logger {

    // build and return a logger

}

models/user.go的内容是

package main

type User struct {
    Firstname  string    `json:"first_name"`
    Lastname   string    `json:"last_name"`
}

// other functions

我很好奇设置包结构的最佳方法-

  1. 我的models/user.go应该是package models的一部分而不是package main的一部分吗?有什么区别,我怎么知道什么时候使用?

  2. 如果我确实使用package modelsmodels/user.go如何访问log中定义的全局main.go对象? (如您所见,我正尝试一次定义一个记录器,并使其可在我的整个应用程序中访问。)

谢谢!

1 个答案:

答案 0 :(得分:1)

为您的日志记录API单独准备一个软件包,

将代码结构化为软件包应基于功能, 程序包应该彼此独立,并且它们的名称应代表该程序包的含义。

如果您有多个var searchBounds = rectangle.getBounds(); var service = new google.maps.places.PlacesService(map); service.nearbySearch({ bounds:searchBounds, type: ['point_of_interest'] }, callback); 并且models是其中的一个,并且如果以后要添加更多的user类型,则制作一个像model这样的包,usercustomer,它们是“模型”的子包。

在导入...时执行user

类似于.../modle/user

可以添加新程序包,而无需对现有代码进行太多更改,只需进行最少的更改即可。

这是一个由社区维护的github repository,其中包含更详细的项目布局信息。