出于类型严格性考虑,当大小不能为负数时,有时会将我的大小存储为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 {
第一个效率低下,因为我在每次迭代中都进行强制转换,第二个则不太优雅。有一个更好的方法吗?
沧海一幻觉
相关分类