2017-05-06 1 views
-2

Ich kann nicht scheinen, den < = (größer als oder gleich) Operator zu verwenden, wenn big.Int verwendet wird.operator <= nicht auf Zeiger definiert

Gibt es eine Möglichkeit, zwei big.Ints zu vergleichen?

Mein Code ist als solche:

for i := big.NewInt(2); i <= sqrt; i.Add(i, big.NewInt(1)) {... 

'i' und 'sqrt' sind, was ich vergleichen wollen.

Vielen Dank für jede Hilfe

+1

Mit der [ 'Int.Cmp' Methode] (https://godoc.org/math/big#Int.Cmp). –

Antwort

1

Verwenden Sie die Cmp Methode der großen (https://golang.org/pkg/math/big/#Int.Cmp) Cmp -1 zurück, wenn weniger als. 0 wenn gleich oder 1 wenn größer.

package main 

import (
    "fmt" 
    "math/big" 
) 

func main() { 
    for i := big.NewInt(2); i.Cmp(big.NewInt(10)) < 1; i.Add(i, big.NewInt(1)) { 
     fmt.Println(i) 
    } 
} 

Spielplatz: https://play.golang.org/p/FpU8xaRrdE

+0

Wie würde ich das als '<=' implementieren? Wie in, weniger als oder gleich? – MaxCodes

+0

Es ist kleiner oder gleich. Denken Sie daran, dass Cmp nur 1 zurückgibt, wenn es größer ist. Also, wenn ich 10 bin, gibt Cmp 0 zurück und es druckt immer noch, aber wenn ich 11 ist, gibt es 1 zurück und stoppt. Sehen Sie sich das Beispiel des Spielplatzes gut an, modifizieren Sie es, bis Sie es verstanden haben. – Qubert