Le Go par l'exemple: Extraction de nombres

Parser des nombres à partir d’une chaîne est une tâche simple mais courante dans de nombreux programmes. Voici comment le faire en Go.

package main

Le package strconv de la librairie standard fournit ces fonctionnalités.

import "strconv"
import "fmt"
func main() {

Avec ParseFloat, le 64 indique combien de bits de précision utiliser.

    f, _ := strconv.ParseFloat("1.234", 64)
    fmt.Println(f)

Pour ParseInt, le 0 signifie qu’on cherche à déduire la base à partir de la chaine. 64 demande à faire rentrer le résultat dans 64 bits.

    //
    i, _ := strconv.ParseInt("123", 0, 64)
    fmt.Println(i)

ParseInt reconnait les nombres formattés en hexadécimal.

    d, _ := strconv.ParseInt("0x1c8", 0, 64)
    fmt.Println(d)

Une fonction ParseUint est également disponible.

    u, _ := strconv.ParseUint("789", 0, 64)
    fmt.Println(u)

Atoi est une fonction pratique pour extraire facilement un int en base 10.

    k, _ := strconv.Atoi("135")
    fmt.Println(k)

Les fonctions de parsing renvoient une erreur lorsque les données d’entrée ne conviennent pas.

    _, e := strconv.Atoi("wat")
    fmt.Println(e)
}
$ go run number-parsing.go 
1.234
123
456
789
135
strconv.ParseInt: parsing "wat": invalid syntax

Ensuite nous allons regarder une autre tâche de parsing courante : les URLs.

Exemple suivant: Analyse d'URL.