是否可以在 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 社区。p>
假设您有一个独立的项目,没有引用任何其他 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/