go - 从子包中的 main 导入 vars/consts

标签 go

我在 $GOPATH/dalu/myproject 有一个 Go 项目,其中包含以下文件:

main.go:

package main

import "dalu/myproject/subpackage"
var GV string = "World"

func main() {
    subpackage.Hello()
}

subpackage/subpackage.go:

package subpackage

import (
    "fmt"
    "dalu/myproject"
)

func Hello() {
    //? fmt.Println("Hello"+GV)
}

奖金(如果可以的话): 我尝试使用更多子包进行类似的操作,当尝试在 main 中导入一个子包时,该子包会导入另一个子包,该子包会导入第一个提到的子包,我得到“不允许导入周期”

最佳答案

正如编译器所说的那样,Go 不允许循环依赖,而且与 C++ 不同,这里没有前向声明技巧。

如果您处于以下状态: A 导入 B AND B 导入 A

这意味着您需要将它们之间共享的任何内容移动到打包 C 中,然后执行以下操作: A 导入 B,C 和 B 导入 C

大家都很开心!

或者在您的示例中,添加一个名为 dalu/myproject/gv/gv.go 的文件,并在其中定义此 GV。然后在 mainsubpackage

中导入

关于go - 从子包中的 main 导入 vars/consts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21205696/

相关文章:

go - 将匿名结构元素添加到 slice

go - Go lang函数返回多个值如何使用可变参数传递给其他函数

python - Golang - 打包和散列二进制数据

go - Go中的多部分http请求

带有Go的Dockerfile找不到路径

go - 计算两个数之间的差并得到绝对值

golang 编译错误 : undefined: strings in strings. trim

go - Golang 的 Gradle(在 Java 项目中使用/构建一些 .go)

python - Go 中如何将字节转换为 float32 数组?

golang ParseInt int8 不是无符号的