【问题标题】:Using multiple packages versus a single package for the project [closed]为项目使用多个包与单个包[关闭]
【发布时间】:2018-10-13 05:06:14
【问题描述】:

我有一个基本的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 如何访问main.go 中定义的全局log 对象? (如您所见,我试图定义一个记录器并在整个应用程序中访问它。)

谢谢!

【问题讨论】:

标签: go package


【解决方案1】:

为您的日志记录 API 制作一个单独的包,

将代码构建成包应该基于功能, 包应该相互独立,并且它们的名称应该代表该包的含义。

如果您有多个modelsuser 是其中之一,并且如果稍后要添加更多model 类型,则制作usercustomer... 之类的包,它们是`model的子包。

当导入user 时做.../modle/user

类似于encoding/json

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 2019-07-01
    • 2019-09-06
    • 2011-12-15
    • 2014-12-17
    • 1970-01-01
    相关资源
    最近更新 更多