栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Golang中For循环的歧义行为

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Golang中For循环的歧义行为

i
是类型的
uint32
,因此一旦达到
0
最大值,再次递减将导致最大值
uint32
。更改循环条件以进行检查:

var i uint32 // pre bellow works fine with int32for i = 31; i != 0xffffffff; i-- {    fmt.Println(i)}

在Go Playground上尝试一下。

或使用

math.MaxUint32
常数:

var i uint32 // pre bellow works fine with int32for i = 31; i != max.MaxUint32; i-- {    fmt.Println(i)}

或使用

^uint32(0)
表达式(
^
运算符为按位补码运算符)应用于,
0
将为您提供一个值,其中所有位均为1:的最大值
uint32

尽管如果您看一下代码,它并不直观,很难理解。因此,您应该在不需要且更简单的地方使用替代方法,例如使用

int32
和检查
i >=0
,或使用向上循环,例如:

for i := uint32(0); i < 32; i++ {    fmt.Println(31 - i)}

或将循环变量的范围偏移+1,因此您可以测试

i >= 1
i > 0

for i := uint32(32); i > 0; i-- {    fmt.Println(i-1)}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/406495.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号