2013-02-22 14 views
11

Go domyślnie używa int dla iteratora, z wyjątkiem tego, że chcę uint64. Nie mogę znaleźć sposobu na zmianę typu iteratora pętli for w Go. Czy istnieje sposób, aby to zrobić w linii z instrukcją for? Domyślny typ int powoduje problemy, gdy próbuję coś zrobić w pętli, jak operacja mod (%).Go: w jaki sposób mogę zmienić typ iteratora pętli for?

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) 

Odpowiedz

21

Masz na myśli coś takiego?

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

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

+0

Dzięki! Szukałem kilku dokumentów na temat "rzucania" i niczego nie znalazłem. – mfisch

+1

W programie Go nazywa się "asercją typu". – Daniel

+14

@Daniel: asercja typu to składnia 'v, ok: = foo. (Int64)'. Składnia 'uint64 (1)' jest nazywana konwersją. –

Powiązane problemy