Go:如何更改for循环迭代器类型?

时间:2013-02-22 17:56:40

标签: go

默认情况下,除了我想要uint64之外,默认使用int作为迭代器。我无法找到一种方法来改变Go中for循环迭代器的类型。有没有办法与for语句一起内联?当我尝试在循环中执行某些操作时,默认类型的int会导致问题,例如mod操作(%)。

func main() {                                                                                                                               
    var val uint64 = 1234567890                                                 
    for i:=1; i<val; i+=2 {  
        if val%i==0 {
        }                                        
    }                                                                          
} 

./q.go:7: invalid operation: i < val (mismatched types int and uint64)
./q.go:8: invalid operation: val % i (mismatched types uint64 and int)

2 个答案:

答案 0 :(得分:24)

你的意思是这样的吗?

for i, val := uint64(1), uint64(1234567890); i<val; i+=2 {
    // your modulus operation
} 

http://play.golang.org/p/yAdiJu4pNC

答案 1 :(得分:0)

另一种选择是使用“while”循环:

package main

func main() {                                                                 
   var i, val uint64 = 1, 1234567890
   for i < val {
      if val % i == 0 {
         println(i)
      }
      i += 2
   }                                                                          
} 

https://golang.org/ref/spec#For_condition