golang math.MinInt64文字列をintに変換すると失敗する

Xetius:

次の関数があるとします:

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

何が悪いのですか?

ctcherry:

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

strconv.ParseIntに切り替えて、型としてint64を明示的に使用すると役立つようです。MinInt64文字列のダッシュ文字にも問題がありましたが、それは私の最後にあるかもしれませんが、チェックして、それが何らかのUnicodeダッシュではなく基本的なASCII文字であることを確認する価値があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Golang, math/big: what is the max value of *big.Int

分類Dev

How to insert math/big.Int in mongo via mgo in golang

分類Dev

文字列をint64に変換するGolang

分類Dev

golangのmgoを介してmongoにmath / big.Intを挿入する方法

分類Dev

Golangで数値(intまたはfloat64)を文字列に変換する方法

分類Dev

golangでbase64文字列をデコードする

分類Dev

math / randを使用してgolangでランダム変数を生成する

分類Dev

Golangで部分文字列をintに変換する

分類Dev

Golang:文字列を[] intに変換する方法は?

分類Dev

golang math / bigライブラリの奇妙な構文

分類Dev

Golangは、math.Float64frombitsを使用して[] byte( "1575455669.4")をfloat64に変換できません

分類Dev

Golang math / big Unmarshal Lost Precision

分類Dev

GolangはUTF16文字列をUTF8に変換します

分類Dev

Golangがfloat64をintエラーに変換する

分類Dev

Golangでint配列をバイト配列に変換する

分類Dev

文字列を小文字に変換するgolang

分類Dev

Golangで文字列を配列に変換する方法は?

分類Dev

文字列をgolangの整数の配列に変換する

分類Dev

Golangを使用して文字列をXMLに変換する方法

分類Dev

JSONサイズが65500文字を超えると、golangのChromeネイティブメッセージングホストが失敗する

分類Dev

Golangでint(int64)をuint16に変換する方法は?

分類Dev

出力文字列をgolangでマップに変換する

分類Dev

出力文字列をgolangでマップに変換する

分類Dev

golangでマップを文字列に変換する

分類Dev

Golang:文字列をバイナリ表現に変換する方法

分類Dev

Golang:文字列をバイナリ表現に変換する方法

分類Dev

golangで文字列をjsonに変換する方法は?

分類Dev

golangで文字列をjsonに変換する方法は?

分類Dev

GoLangのforループで値を文字列に変換する

Related 関連記事

  1. 1

    Golang, math/big: what is the max value of *big.Int

  2. 2

    How to insert math/big.Int in mongo via mgo in golang

  3. 3

    文字列をint64に変換するGolang

  4. 4

    golangのmgoを介してmongoにmath / big.Intを挿入する方法

  5. 5

    Golangで数値(intまたはfloat64)を文字列に変換する方法

  6. 6

    golangでbase64文字列をデコードする

  7. 7

    math / randを使用してgolangでランダム変数を生成する

  8. 8

    Golangで部分文字列をintに変換する

  9. 9

    Golang:文字列を[] intに変換する方法は?

  10. 10

    golang math / bigライブラリの奇妙な構文

  11. 11

    Golangは、math.Float64frombitsを使用して[] byte( "1575455669.4")をfloat64に変換できません

  12. 12

    Golang math / big Unmarshal Lost Precision

  13. 13

    GolangはUTF16文字列をUTF8に変換します

  14. 14

    Golangがfloat64をintエラーに変換する

  15. 15

    Golangでint配列をバイト配列に変換する

  16. 16

    文字列を小文字に変換するgolang

  17. 17

    Golangで文字列を配列に変換する方法は?

  18. 18

    文字列をgolangの整数の配列に変換する

  19. 19

    Golangを使用して文字列をXMLに変換する方法

  20. 20

    JSONサイズが65500文字を超えると、golangのChromeネイティブメッセージングホストが失敗する

  21. 21

    Golangでint(int64)をuint16に変換する方法は?

  22. 22

    出力文字列をgolangでマップに変換する

  23. 23

    出力文字列をgolangでマップに変換する

  24. 24

    golangでマップを文字列に変換する

  25. 25

    Golang:文字列をバイナリ表現に変換する方法

  26. 26

    Golang:文字列をバイナリ表現に変換する方法

  27. 27

    golangで文字列をjsonに変換する方法は?

  28. 28

    golangで文字列をjsonに変換する方法は?

  29. 29

    GoLangのforループで値を文字列に変換する

ホットタグ

アーカイブ