代码之家  ›  专栏  ›  技术社区  ›  user2490003

对项目使用多个包而不是单个包[已关闭]

  •  0
  • user2490003  · 技术社区  · 6 年前

    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. 我应该 型号/用户.go 成为…的一部分 package models package main ? 有什么区别?我怎么知道什么时候用?

    2. 如果我使用 包装型号 ,怎么可能 型号/用户.go log 中定义的对象 主菜单.go ? (如您所见,我正在尝试定义一次记录器,并在整个应用程序中访问它。)

    谢谢!

    1 回复  |  直到 6 年前
        1
  •  2
  •   nilsocket    6 年前

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

    将代码组织成包应该基于功能, 包应该相互独立,它们的名称应该表示包的含义。

    models user 是其中之一,如果更多 model 稍后将添加类型,然后生成一个包,如 用户 , customer ...

    导入时 .../modle/user

    类似 encoding/json

    可以添加新的包,而无需对现有代码进行大量更改,只需进行最少的更改。

    github repository 其中包含更详细的项目布局信息。