【问题标题】:Compilation error with default command line argument value默认命令行参数值的编译错误
【发布时间】:2015-01-12 14:12:23
【问题描述】:

当我尝试使用 uint64 类型的命令行参数时,当我将默认值设置为有效的无符号 64 位数字时,出现以下编译错误。

编译错误: 表达式类型不匹配,预期类型为 uint64 少... 它在此处突出显示数字 5000,表示这不是可接受的值。

代码:

var golferInstance uint64 

flag.Uint64Var(&golferInstance, "inst", 5000, "Golfer Instance ID, this should be Globaly Unique ")
flag.Parse()

我没有看到上面的声明有什么问题,那为什么会出现编译错误??

我在这里缺少什么? (我相信一定是我没弄明白的傻事) 任何帮助表示赞赏。

谢谢

【问题讨论】:

  • 你使用的是什么版本的 Go?似乎在操场上工作正常..
  • go 版本 go1.2.2 linux/amd64
  • 你是如何编译这个的?如果您使用的是 IDE,可以尝试直接使用 go 工具进行编译?
  • 是的,IDE(IntelliJ 13.1.2) 后台编译过程似乎有些问题。使用我构建的'gd'构建工具并且它有效。感谢您的建议。

标签: command-line go default-value


【解决方案1】:

go-lang-idea-plugin 中的检查类型在某些类型不匹配检测方面存在一些问题。
issue 348(应该在该插件的最新版本中解决)

您可以取消选择该检查器。

在界面中它被称为'Highlight mismatched types',我相信是这个。
检查的消息是:'Expression type mismatch, expected type is ...'

在检测到构造“time.Sleep(1 * time.Second)”中的“1 * time.Second”是正确的“Duration”类型时,它似乎也有问题,它试图像这样“time.Sleep((time.Duration)(1 * time.Second))”来修复它。

回到命令行,和/或确保所有组件都是最新的(golang IntelliJ 插件,Go 本身),可以提供帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-16
    • 2011-08-10
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 2014-08-07
    相关资源
    最近更新 更多