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

Go-uint32 in for循环条件(类型不匹配的int和uint32)

Go-uint32 in for循环条件(类型不匹配的int和uint32)

Go
萧十郎 2021-05-21 22:22:56
出于类型严格性考虑,当大小不能为负数时,有时会将我的大小存储为uint。在for循环中使用时,我希望它看起来像这样:var size uint32 = 8for i := 0; i < size; {    n := //doesn't matter how how this value is determined    i += n}但是,我收到以下错误消息: invalid operation: i < size (mismatched types int and uint32)重写for循环以指定如下类型:for var i uint32 = 0; i < size; {产生此编译器错误: syntax error: var declaration not allowed in for initializer解决这些错误的唯一方法是:for i := 0; uint32(i) < size; {或者var i uint32 = 0for i < size {第一个效率低下,因为我在每次迭代中都进行强制转换,第二个则不太优雅。有一个更好的方法吗?
查看完整描述

1 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

你可以做:


for i := uint32(0); i < size; {

    //whatever

}

通常,即使大小永远不能为负数,我也不建议使用无符号整数。我不知道有什么好处。当我故意溢出时,我只使用无符号整数。


查看完整回答
反对 回复 2021-05-24
  • 1 回答
  • 0 关注
  • 416 浏览
慕课专栏
更多

添加回答

举报

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