Wie konvertiert man Zeichenkette in Ganzzahl-Typ in Go

Suraj Joshi 30 Januar 2023
  1. Funktion Atoi() aus dem Paket strconv
  2. ParseInt() Funktion aus strconv Paket
  3. fmt.Sscanf-Methode
  4. Vergleich der Methoden
Wie konvertiert man Zeichenkette in Ganzzahl-Typ in Go

Go ist die statisch typisierte Sprachbedeutung, wenn wir die Variable als int definieren, kann sie nur int sein; wir können ihr nicht die string zuweisen, ohne den Zeichenketten-Datentyp einer Variablen zu konvertieren. Go hat ein eingebautes Paket namens strconv, das drei Funktionen Atoi(), Sscanf() und ParseInt() zur Verfügung stellt, um Go Zeichenkette nach int zu konvertieren.

Funktion Atoi() aus dem Paket strconv

Paket strconv implementiert Konvertierungen zu und von Zeichenkettenrepräsentationen von Basisdatentypen. Um eine Zeichenkette in eine ganze Zahl zu konvertieren, verwenden wir die Funktion Atoi() aus dem Paket strconv. Atoi steht für ASCII zu Ganzzahl.

package main

import (
    "fmt"
    "strconv"
)

func main() {
    age := "13"
    fmt.Printf("Datatype of age before conversion : %T\n", age)
    fmt.Println("After Conversion:")
    if sv, err := strconv.Atoi(age); err == nil {
        fmt.Printf("%T, %v\n", sv, sv)
    }
}   

Ausgabe:

Datatype of age before conversion : string
After Conversion:
int, 13

Wenn die Eingabezeichenkette nicht im Integer-Format ist, gibt die Funktion null zurück.

package main

import (
    "fmt"
    "strconv"
)

func main() {
    age := "abc"
    fmt.Printf("Datatype of age before conversion : %T\n", age)
    fmt.Println("After Conversion:")
    sv, _ := strconv.Atoi(age)

    fmt.Printf("%T, %v\n", sv, sv)

}  

Ausgabe:

Datatype of age before conversion : string
After Conversion:
int, 0

ParseInt() Funktion aus strconv Paket

Die Methode strconv.ParseInt(s, base, bitSize) interpretiert die Eingabezeichenkette s in der gegebenen Basis (0, 2 bis 36) und Bitgröße (0 bis 64) und gibt eine entsprechende Ganzzahl zurück. Atoi(s) ist äquivalent zu ParseInt(s, 10, 0).

package main

import (
    "fmt"
    "reflect"
    "strconv"
)

func main() {
    x := "123"
    fmt.Println("Value of x before conversion: ", x)
    fmt.Println("Datatype of x before conversion:", reflect.TypeOf(x))
    intStr, _ := strconv.ParseInt(x, 10, 64)
    fmt.Println("Value after conversion: ", intStr)
    fmt.Println("Datatype after conversion:", reflect.TypeOf(intStr))
}

Ausgabe:

Value of x before conversion:  123
Datatype of x before conversion: string
Value after conversion:  123
Datatype after conversion: int64

fmt.Sscanf-Methode

fmt.Sscanf() eignet sich hervorragend zum Parsen benutzerdefinierter Zeichenketten, die eine Zahl enthalten. Die Funktion Sscanf() scannt die Argumentzeichenkette, speichert aufeinanderfolgende, durch Leerzeichen getrennte Werte in aufeinanderfolgende Argumente, wie durch das Format definiert, und gibt die Anzahl der erfolgreich geparsten Elemente zurück.

package main

import (
    "fmt"
)

func main() {
    s := "id:00234"

    var i int
    if _, err := fmt.Sscanf(s, "id:%5d", &i); err == nil {
        fmt.Println(i)
    }
} 

Ausgabe:

234

Vergleich der Methoden

Die strconv.ParseInt() ist die schnellste aller Methoden, strconv.Atoi() ist etwas langsamer als strconv.ParseInt() und fmt.Sscanf() ist die langsamste von allen, aber die flexibelste Methode.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Verwandter Artikel - Go String