[英]How to convert an int64 to int in Go?
在 Go 中,將int64
轉換為int
的最佳策略是什么? 我很難比較兩者
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
}
您使用“轉換”類型轉換它們
var a int
var b int64
int64(a) < b
比較值時,您總是希望將較小的類型轉換為較大的類型。 轉換另一種方式可能會截斷值:
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
或者在您的情況下將maxInt
int64
值轉換為int
,您可以使用
for a := 2; a < int(maxInt); a++ {
如果maxInt
溢出系統上int
類型的最大值,它將無法正確執行。
我來這里是因為標題“如何在 Go 中將 int64 轉換為 int?” . 答案是,
int(int64Var)
使用 strconv 包是正確的
strconv.FormatInt(int64Var, 10)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.