web-dev-qa-db-ja.com

文字列をint64に変換するGolang

文字列をint64に変換したい。 strconvパッケージから見つけたのは、Atoi関数です。文字列をintにキャストして返すようです:

// Atoi is shorthand for ParseInt(s, 10, 0).
func Atoi(s string) (i int, err error) {
        i64, err := ParseInt(s, 10, 0)
    return int(i64), err
}

ParseIntは、実際にはint64を返します。

func ParseInt(s string, base int, bitSize int) (i int64, err error){
     //...
}

したがって、文字列からint64を取得したい場合は、Atoiの使用を避け、代わりにParseIntを使用する必要がありますか?または、どこかに隠されたAtio64がありますか?

59
Qian Chen

いいえ、Atoi64はありません。また、ParseIntの最後のパラメーターとして64を渡す必要があります。そうしないと、32ビットシステムで期待される値が生成されない場合があります。

47
Eve Freeman

文字列をint64の例に解析する:

// Use the max value for signed 64 integer. http://golang.org/pkg/builtin/#int64
var s string = "9223372036854775807"
i, err := strconv.ParseInt(s, 10, 64)
if err != nil {
    panic(err)
}
fmt.Printf("Hello, %v with type %s!\n", i, reflect.TypeOf(i))

出力:

こんにちは、タイプ64の9223372036854775807です!

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

136
ET-CS