我试图在Go中创建一个干净的架构API,但是我对程序包逻辑感到困惑。这是项目的结构。
main.go <- package main
├── delivery/
│ ├── endpoints/
│ │ ├── users.go <- package endpoints (I want to import ./repository here)
│ │ └── home.go <- package endpoints
│ ├── router.go <- package delivery
│ ├── middleware.go <- package delivery
├── repository/
│ ├── database.go <- package repository
│ └── fetchUsers.go <- package repository
在router.go
文件中,我可以访问和导入类似import "./endpoints"
的端点,但是当我尝试在users.go
或home.go
内导入存储库软件包时,出现错误。有没有办法从端点文件夹中的文件访问存储库?
答案 0 :(得分:2)
唯一推荐/规范的导入方式是完整路径。如果您的代码位于github.com/Uranus/myproject
中,那么在endpoints/users.go
中,您应该这样导入repository
:
import "github.com/Uranus/myproject/repository"
请注意,它实际上不一定必须在github上。使用模块,只要是go.mod
文件中的模块名称,就可以在本地开发时拥有所需的任何导入路径。
遵循this official Go blog post中的示例,您将知道该怎么做。