为了保持类型严格性,当大小不能为负数时,我有时会将其存储为uint。在for循环中使用时,我希望它看起来像这样:
var size uint32 = 8
for i := 0; i < size; {
n := //doesn't matter how how this value is determined
i += n
}
然而,我收到了如下错误信息:invalid operation: i < size (mismatched types int and uint32)
将for循环重写为指定类型的方式如下:
for var i uint32 = 0; i < size; {
产生这个编译器错误:syntax error: var declaration not allowed in for initializer
唯一的解决方法是:
for i := 0; uint32(i) < size; {
或者
var i uint32 = 0
for i < size {
第一种方法效率低下,因为我在每次迭代中都进行了类型转换,而第二种方法则不够优雅。有没有更好的方法来解决这个问题?
var uint32 size = 8
应该改为var size uint32 = 8
,类型应该在左值之后。 - thwd