Golang 从根目录导入包
Golang import package from root directory
我正在尝试在 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
中导入存储库包时,我得到一个错误。有没有办法从端点文件夹中的文件访问存储库?
唯一的recommended/canonical导入方式是使用完整路径。如果您的代码位于 github.com/Uranus/myproject
,那么您应该在 endpoints/users.go
中导入 repository
,因此:
import "github.com/Uranus/myproject/repository"
请注意,它实际上并不一定要在 github 上。使用模块,您可以在本地开发时使用任何您喜欢的导入路径,只要它是 go.mod
文件中的模块名称即可。
按照 this official Go blog post 中的示例进行操作,您就会知道该怎么做。
我正在尝试在 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
中导入存储库包时,我得到一个错误。有没有办法从端点文件夹中的文件访问存储库?
唯一的recommended/canonical导入方式是使用完整路径。如果您的代码位于 github.com/Uranus/myproject
,那么您应该在 endpoints/users.go
中导入 repository
,因此:
import "github.com/Uranus/myproject/repository"
请注意,它实际上并不一定要在 github 上。使用模块,您可以在本地开发时使用任何您喜欢的导入路径,只要它是 go.mod
文件中的模块名称即可。
按照 this official Go blog post 中的示例进行操作,您就会知道该怎么做。