Golang 项目子目录下的包
在专业实训中遇见了一些问题,之前用go写的程序全部都是只有一个package main
,而这次实训中考虑到项目代码文件可能会比较多,不再适合只用一个包来组织,所以尝试使用多个包来组织项目,期间也踩了一些坑。
最初我想的是只是通过目录树,创建一个子目录依旧是同一个main包的方式来组织代码,但是发现go程序找不到子目录文件中的函数,后来了解到golang中需要用包来组织项目结构,而不仅仅是目录树。
所以我将子目录下的文件的package改成了controllers,不过此时又遇到了如何导入的问题。我一开始使用的是 import ./controllers
这样相对路径的导入方式,但是出现了错误 local import “./cfg” in non-local package,经过查询得知 go mod init module
初始化的模块导入子目录中的包时,应该使用 import module/controllers
这样的形式。