go int int64

¿Cómo convertir un int64 a int en Go?



(1)

En Go, ¿cuál es la mejor estrategia para convertir int64 en int ? Estoy teniendo dificultades para comparar los dos

package main import ( "math" "strings" "strconv" ) type largestPrimeFactor struct { N int Result int } func main() { base := largestPrimeFactor{N:13195} max := math.Sqrt(float64(base.N)) maxStr := strconv.FormatFloat(max, ''E'', ''G'', 64) maxShift := strings.Split(maxStr, ".")[0] maxInt, err := strconv.ParseInt(maxShift, 10, 64) if (err != nil) { panic(err) }

en esta siguiente linea

for a := 2; a < maxInt; a++ { if isPrime(a) { if base.N % a == 0 { base.Result = a } } } println(base) } func isPrime(n int) bool { flag := false max := math.Sqrt(float64(n)) maxStr := strconv.FormatFloat(max, ''E'', ''G'', 64) maxShift := strings.Split(maxStr, ".")[0] maxInt, err := strconv.ParseInt(maxShift, 10, 64) if (err != nil) { panic(err) } for a := 2; a < maxInt; a++ { if (n % a == 0) { flag := true } } return flag }


Los conviertes con un tipo de "conversion"

var a int var b int64 int64(a) < b

Al comparar valores, siempre desea convertir el tipo más pequeño en el más grande. La conversión de la otra manera posiblemente truncará el valor:

var x int32 = 0 var y int64 = math.MaxInt32 + 1 // y == 2147483648 if x < int32(y) { // this evaluates to false, because int32(y) is -2147483648

O, en su caso, para convertir el valor maxInt int64 en un int , puede usar

for a := 2; a < int(maxInt); a++ {

que no se ejecutaría correctamente si maxInt desborda el valor máximo del tipo int en su sistema.