Как преобразовать int64 в int в Go?
Проблема с преобразованием int64
в int
в Go
В Go, какая лучшая стратегия для конвертации int64
в int
? У меня возникли трудности с сравнением этих двух типов.
Вот пример кода, где я пытаюсь использовать int64
для вычислений:
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)
}
// Здесь возникает проблема преобразования
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
}
В строке с циклом for a := 2; a < maxInt; a++ {
я пытаюсь сравнить переменную a
, которая имеет тип int
, с maxInt
, который является int64
. Это вызывает ошибки компиляции. Как я могу правильно преобразовать int64
в int
, чтобы избежать данных ошибок и убедиться, что преобразование не приведет к потере данных в рамках допустимого диапазона значений?
1 ответ(ов)
Я пришёл сюда из-за заголовка "Как преобразовать int64 в int в Go?". Ответ таков:
int(int64Var)
Как преобразовать int в строку в Go?
Существует ли цикл foreach в Go?
Как сопоставить любой символ на нескольких строках в регулярном выражении?
Отформатировать строку в Go без вывода?
Получение тега поля структуры с использованием пакета reflect в Go