为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
holdtom 2021-06-02 17:20:08
我有几个函数将 anuint作为输入: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 uintfor i = Low; i <= High; i++ {    foo(i)    bar(i)    baz(i)}
查看完整描述

2 回答

?
www说

TA贡献1775条经验 获得超8个赞

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

    ...

}

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


或者,虽然我会坚持上述内容,但您可以输入常量。


const (

    Low = uint(10)

    High = uint(20)

)

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


查看完整回答
反对 回复 2021-06-07
?
三国纷争

TA贡献1804条经验 获得超7个赞

for i := uint(Low); i <= High; i++ { //EDIT: cf. larsmans' comment

        foo(i)

        bar(i)

        baz(i)

}

或者定义要输入的常量:


const (

        Low  uint = 10

        High uint = 20

)


...


for i := Low; i <= High; i++ {

        foo(i)

        bar(i)

        baz(i)

}


查看完整回答
反对 回复 2021-06-07
  • 2 回答
  • 0 关注
  • 218 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信