web-dev-qa-db-fra.com

Golang convertissant une chaîne en int64

Je veux convertir une chaîne en int64. Ce que je trouve dans le package strconv est la fonction Atoi. Il semble lancer une chaîne sur un int et le renvoyer:

// 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
}

Le ParseInt renvoie en fait un int64:

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

Donc, si je veux obtenir un int64 à partir d'une chaîne, dois-je éviter d'utiliser Atoi, utilisez plutôt ParseInt? Ou y a-t-il un Atio64 caché quelque part?

59
Qian Chen

Non, il n'y a pas d'Atoi64. Vous devez également transmettre le paramètre 64 en dernier lieu à ParseInt, sinon la valeur attendue pourrait ne pas être générée sur un système 32 bits.

47
Eve Freeman

Analyse de chaîne en exemple 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))

sortie:

Bonjour, 9223372036854775807 avec le type int64!

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

136
ET-CS