我有一个基本的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
如何访问log
中定义的全局main.go
对象? (如您所见,我正尝试一次定义一个记录器,并使其可在我的整个应用程序中访问。)
谢谢!
答案 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
这样的包,user
,customer
,它们是“模型”的子包。
在导入...
时执行user
类似于.../modle/user
。
可以添加新程序包,而无需对现有代码进行太多更改,只需进行最少的更改即可。
这是一个由社区维护的github repository,其中包含更详细的项目布局信息。