我希望这行得通:var xs []uint8var x uint8for x = range xs {}但我收到错误:cannot assign type int to x (type uint8) in range即(据我所知)range,即使它在的一个切片上进行操作uint8,也试图将其int用作迭代值。我已经浏览了语言规范,相关的内容:Range expression 1st value 2nd value (if 2nd variable is present)array or slice a [n]E, *[n]E, or []E index i int a[i] E因此,我希望它是E“参数化类型” *,在这种情况下uint8不是int。我有没有抓住棍子的错误末端?我错过了一些文档吗?还是我真的不能遍历uint8带有uint8变量的切片?
1 回答
翻阅古今
TA贡献1780条经验 获得超5个赞
range 返回一个索引到集合中,并可能返回该位置的值:
range关键字range关键字使您可以遍历列表项(例如数组或映射)。为了理解它,您可以将range关键字翻译为的每个索引。当与数组和切片一起使用时,它返回项目的整数索引。(教程)
样例代码:
package main
import "fmt"
func main() {
var xs []uint8 = []uint8{255, 254, 253}
var idx int
var ui8 uint8
for idx, ui8 = range xs {
fmt.Println(idx, ui8)
}
}
输出:
0 255
1 254
2 253
PS:
也许看一下Javascript会使Go的方法变得不那么奇怪了:
% a = [255, 254, 253]
255,254,253
% for (x in a) { print(x, " ", a[x]); }
0 255
1 254
2 253
- 1 回答
- 0 关注
- 285 浏览
添加回答
举报
0/150
提交
取消