【发布时间】: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
我很好奇设置包结构的最佳方式 -
我的
models/user.go是否应该成为package models的一部分而不是package main?有什么区别,我怎么知道什么时候使用?如果我确实使用
package models,models/user.go如何访问main.go中定义的全局log对象? (如您所见,我试图定义一个记录器并在整个应用程序中访问它。)
谢谢!
【问题讨论】:
-
这是一个很好的关于包布局的讨论:medium.com/@benbjohnson/standard-package-layout-7cdbc8391fc1
-
1.是的,不同的目录是不同的包。 2. 您不能与任何其他包共享
main包中声明的任何内容。共享声明应位于非主包中。