在 Go 中导入子包而不显式导入每个目录
当使用在单个目录下包含多个子包的项目结构时,它可以单独导入每个子包不方便。为了解决这个问题,开发者可能想知道是否有一种方法可以使用通配符导入目录中的所有子包。
用户提供的示例涉及一个结构如下的项目:
main.go (root directory) |- entities |- bar |- bar.go |- basic.go |- req.go
尝试使用如下所示的通用符号导入 bar 子包会触发编译error:
package main import bar "one/entities/bar/*" func main(){ }
不幸的是,Go 的导入语法不支持通配符导入。错误消息表明指定目录中没有 Go 文件:
src/main/main.go:3:8: no Go files in /home/oleg/codes/oresoftware/oredoc/test/builds/go/src/one/entities/bar
建议的方法是显式指定要导入的子包,而不是使用通配符导入子包。这确保了依赖关系被明确定义并且可以被其他开发人员轻松理解。
对于提供的示例,正确的导入语句将是:
package main import ( "log" "one/entities/bar/basic" ) func main(){ v := basic.Get.Req.Headers{} log.Fatal(v) }
在这种情况下,只有导入所需的特定子包,即 basic。这种方法避免了对未使用的子包的潜在依赖,并保持代码井然有序。
以上是我可以使用通配符导入 Go 中目录中的所有子包吗?的详细内容。更多信息请关注PHP中文网其他相关文章!