Go语言保留for循环i<=10条件如何避免index out of range报错
Go代码保留
i<=10循环条件的修改方案 报错的核心原因是字符串"Hello"的字节长度仅为5,合法索引范围为0~4,直接访问大于等于5的索引会触发越界panic。你可以通过增加边界校验的方式保留原循环条件,修改逻辑如下:
在访问字符串索引前先判断索引是否在合法范围内,仅合法索引执行取值操作,超出范围的索引可以自定义处理逻辑,修改后代码示例:
package main import "fmt" func main() { x := "Hello" strLen := len(x) for i := 0; i <= 10; i++ { if i < strLen { fmt.Printf("%#U\n", x[i]) } else { // 此处可按需求自定义超出范围的处理逻辑 fmt.Printf("索引%d超出字符串字节长度(长度为%d)\n", i, strLen) } } }
额外注意事项:
- 上述示例中
len(x)获取的是字符串的字节长度,仅适合纯ASCII字符场景的边界判断 - 如果需要处理包含中文、Emoji等多字节字符的字符串,建议先将字符串转为
[]rune类型后再做长度计算和索引访问,避免取值出现乱码
内容的提问来源于stack exchange,提问作者Mritunjay Upadhyay
相关产品推荐
相关产品推荐

