编辑:这是我的一个愚蠢错误,但这个问题值得保留,以防其他人也犯同样的错误。
我希望这个能够起作用:
var xs []uint8
var x uint8
for x = range xs {
}
但是我遇到了错误:
cannot assign type int to x (type uint8) in range
我理解的是,即使它操作的是uint8
切片,range
仍然试图将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
切片吗?
*我知道它实际上不是一个通用的参数化类型。