如何在 Go 中将 int64 转换为 int?
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
}
您将它们转换为类型 "conversion"
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)
在 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
}
您将它们转换为类型 "conversion"
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)