首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Go - uint32 in for循环条件( int和uint32类型不匹配)

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

Stack Overflow用户
提问于 2012-11-15 01:25:28
回答 1查看 13.6K关注 0票数 24

为了类型严格,当一个大小不能为负时,我有时会将我的大小存储为uint。当在for循环中使用时,我希望它看起来像这样:

代码语言:javascript
运行
复制
var size uint32 = 8
for 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循环以指定如下类型:

代码语言:javascript
运行
复制
for var i uint32 = 0; i < size; {

产生此编译器错误:syntax error: var declaration not allowed in for initializer

解决这些错误的唯一方法是:

代码语言:javascript
运行
复制
for i := 0; uint32(i) < size; {

代码语言:javascript
运行
复制
var i uint32 = 0
for i < size {

第一个on是低效的,因为我在每次迭代中都进行强制转换,而第二个on则不那么优雅。有没有更好的方法来做这件事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-15 01:45:19

您可以执行以下操作:

代码语言:javascript
运行
复制
for i := uint32(0); i < size; {
    //whatever
}

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

票数 38
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13383951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档