Golang从根目录导入包

时间:2019-07-20 14:26:27

标签: go goland

我试图在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内导入存储库软件包时,出现错误。有没有办法从端点文件夹中的文件访问存储库?

1 个答案:

答案 0 :(得分:2)

唯一推荐/规范的导入方式是完整路径。如果您的代码位于github.com/Uranus/myproject中,那么在endpoints/users.go中,您应该这样导入repository

import "github.com/Uranus/myproject/repository"

请注意,它实际上不一定必须在github上。使用模块,只要是go.mod文件中的模块名称,就可以在本地开发时拥有所需的任何导入路径。

遵循this official Go blog post中的示例,您将知道该怎么做。