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.gohome.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 中的示例进行操作,您就会知道该怎么做。