gpt4 book ai didi

golang 将 math.MinInt64 字符串转换为 int 失败

转载 作者:数据小太阳 更新时间:2023-10-29 03:16:12 25 4
gpt4 key购买 nike

给定以下函数:

func convertValue(contents string) (int, error) {
return strconv.Atoi(contents)
}

当我运行以下测试时

var convertValues = []struct {
contents string
value int
}{
{"9223372036854775807", math.MaxInt64},
{"−9223372036854775808", math.MinInt64},
}

func TestConvertValue(t *testing.T) {
for _, values := range convertValues {
value, err := convertValue(values.contents)
if err != nil {
t.Error("Expecting", values.value, "but got error", err.Error())
}

if value != values.value {
t.Error("Expecting ", values.value, ", but got ", value)
}
}
}

它适用于 MaxInt64,但不适用于 MinInt64。我在 MacBookPro 上运行它,所以它以 64 位运行。我已经用以下内容仔细检查了这一点

func TestIntSize(t *testing.T) {
const PtrSize = 32 << uintptr(^uintptr(0)>>63)
fmt.Println(runtime.GOOS, runtime.GOARCH)
fmt.Println(strconv.IntSize, PtrSize)
}

它返回了

darwin amd64
64 64

我做错了什么?

最佳答案

https://play.golang.org/p/FtytYJkHSc

切换到 strconv.ParseInt 并明确使用 int64 作为类型似乎有所帮助。我还遇到了您的 MinInt64 字符串中破折号字符的问题,这可能只是我的问题,但值得检查并确保它是基本的 ASCII 字符而不是某种 Unicode 破折号。

关于golang 将 math.MinInt64 字符串转换为 int 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34700039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com