go - 如何进行短/相对导入

标签 go import

是否可以在 Go 代码中进行相对导入?我看了很多例子,但我真的不明白怎么做。比如我有一个项目app,里面有一个子包utils

app
   main.go
   utils
        utils.go

utils.go:

package utils

import "fmt"

func TestFunc()  {
    fmt.Print("I'm a TestFunc")
}

有没有办法只使用 import "./utils"import "app/utils 来导入这个包,而不是像 import “github.com/hithubuser/app/utils”?

如果没有办法,你如何使用嵌套包?您是为所有导入写完整的路径还是避免这样做?

最佳答案

一般导入路径在$GOPATH/src之后开始,引用doc .

假设您有目录结构:

$GOPATH/src/github.com/hithubuser/app/utils

# your import path is 'github.com/hithubuser/app/utils'

Do you write a full the path for all the imports or you avoid to make it?

是的,通常使用完全导入,因为它使您能够将代码分发为 go 库。这样您就可以开发可重用代码并根据需要将其导入任何项目,或者您可以将其发布到 Go 社区。


假设您有一个独立的项目,没有引用任何其他 Go 项目,并且您正在分发二进制文件而不是 go 库。然后你可以做这样的事情(虽然它不常用/不推荐)。

只需在 $GOPATH/src git clone 你的 repo 就像 git clone github.com/hithubuser/app

$GOPATH/src/app/utils

# then import path is app/utils

关于go - 如何进行短/相对导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45134378/

相关文章:

go - net/http 不适用于 ipv6 地址

带有 channel 的循环中的 goroutine

google-chrome - 如何为 goa-cellar 项目创建 curl 请求或在 Postman(插件)中

python - 子模块的相对导入

mysql - 如何将 CSV 文件导入 MySQL 表

go - 在 Go HTTP 处理程序中使用未导出的结构键获取上下文值时为 nil

go - 你如何从 Golang 执行终端命令?

reactjs - 导入 3 级深度 react

python - AttributeError: 'bool' 对象在导入 SAS 数据集时没有属性 'sum'

mysql - 将 CSV 导入 MySQL 和