go - 在 Go 中,如何自动将循环索引强制转换为 uint?

标签 go

我有一些函数将 uint 作为它们的输入:

func foo(arg uint) {...}
func bar(arg uint) {...}
func baz(arg uint) {...}

我有一个循环,其限制都是常量 uint

const (
    Low = 10
    High = 20
)

在下面的循环中,我怎么能说我希望 i 成为一个 uint ?编译器提示它是 int

for i := Low; i <= High; i++ {
    foo(i)
    bar(i)
    baz(i)
}

我真的不想在每次函数调用时都调用 uint(i),执行以下操作是正确的,但让我觉得很脏:

var i uint

for i = Low; i <= High; i++ {
    foo(i)
    bar(i)
    baz(i)
}

最佳答案

for i := uint(Low); i < High; i++ {
    ...
}

另请注意,uint() 不是函数调用,当应用于常量和(我相信)相同大小的带符号整数时,完全在编译时发生。

或者,尽管我坚持使用上述方法,但您可以键入常量。

const (
    Low = uint(10)
    High = uint(20)
)

那么 i := Low 也将是一个 uint。在大多数情况下,我会坚持使用无类型常量。

关于go - 在 Go 中,如何自动将循环索引强制转换为 uint?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15928071/

相关文章:

go - 如何从主机获取 PeerInfo?

go - 如何让 golint 在 VS Code 上按类型运行而不是在保存时运行?

mongodb - MGO - 从 Mongo 返回的空结果有结果

javascript - $pull mongodb 没有删除项目

go - golang中如何把'改成'?

pointers - 如何定义接收指针的 Go 接口(interface)方法的实现?

xml - 在 GO 中解析 Xml 以获取标记中具有 ":"的属性

string - 当 YAML 文件包含 unicode 字符(如 "a\u0000b")时,在 golang 中读取 YAML 文件

opengl - Golang fmt.Println() 导致游戏崩溃

go - 将接口(interface)方法实现为指针接收器或值接收器的结构