登录
首页 >  Golang >  Go问答

不允许将 lib.Const(常量 16777216,类型为 lib.Version)用作 lib.Version

来源:stackoverflow

时间:2024-03-21 16:09:29 253浏览 收藏

在 TinyGo 编译器中,将 lib.Const 用作 lib.Version 会导致错误。此错误源于以不同名称两次导入相同的包,从而创建了该包的两个实例。普通 Go 编译器通常允许这种情况,但 TinyGo 没有适当的机制来处理它。建议将包路径附加到 $GOPATH 中以防止使用相对路径,从而解决此问题。

问题内容

我遇到了一个奇怪的错误。我有一个更大的项目,可以使用典型的 go build 进行良好的编译。但是当我切换到 tinygo (v0.8.0) 时。我从这段代码中得到上述错误:

func main() {

    _ = lib.NewObject{
         Version: lib.Const,
    }
}

我更改了名称以减少混淆,但符号完全相同。 lib.constlib.version 的常量。指针也不是。

我知道这是一个非常具体的问题,因为它属于 tinygo 领域。这更“记录在案”......而且我什至必须创建“tinygo”标签,因为这个问题非常具体。但要添加更多细节:

  • 在添加上述代码之前已经编译完毕。
  • 确切的构建命令是 tinygo build -target=wasm -o build/out.wasm src/main-wasm.go

解决方案


这是编译器的错误:https://github.com/tinygo-org/tinygo/issues/726

它源于以不同名称两次导入相同的包。在本例中,它是:

// file1:
import "./lib"

// file2:
import "../lib"

上面创建了包“lib”的 2 个实例。当使用普通的 go 编译器时,这通常是可以的。但 tinygo 没有适当的机制来正确处理这个问题。

建议附加到 $gopath 以防止使用相对路径:

// file1:
import "lib"

// file2:
import "lib"

今天关于《不允许将 lib.Const(常量 16777216,类型为 lib.Version)用作 lib.Version》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>