为了账号安全,请及时绑定邮箱和手机立即绑定

越过uint8切片范围?

越过uint8切片范围?

Go
慕侠2389804 2021-05-10 12:08:02
我希望这行得通: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


查看完整回答
反对 回复 2021-05-31
  • 1 回答
  • 0 关注
  • 285 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信