猿问

越过uint8切片范围?

我希望这行得通:


var xs []uint8

var x uint8

for 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变量的切片?


慕侠2389804
浏览 286回答 1
1回答

翻阅古今

range 返回一个索引到集合中,并可能返回该位置的值:range关键字range关键字使您可以遍历列表项(例如数组或映射)。为了理解它,您可以将range关键字翻译为的每个索引。当与数组和切片一起使用时,它返回项目的整数索引。(教程)样例代码:package mainimport "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 2551 2542 253PS:也许看一下Javascript会使Go的方法变得不那么奇怪了:% a = [255, 254, 253]255,254,253% for (x in a) { print(x, " ", a[x]); }0 2551 2542 253
随时随地看视频慕课网APP

相关分类

Go
我要回答