0

Как преобразовать int64 в int в Go?

11

Проблема с преобразованием 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 ответ(ов)

0

Я пришёл сюда из-за заголовка "Как преобразовать int64 в int в Go?". Ответ таков:

int(int64Var)
Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь