Converti stringa in tipo intero in Go
-
Funzione
Atoi()dal pacchettostrconv -
Funzione
ParseInt()dal pacchettostrconv -
Metodo
fmt.Sscanf - Confronto dei metodi
Go è il significato del linguaggio tipizzato staticamente se definiamo la variabile come int, può essere solo int; non possiamo assegnargli la stringa senza convertire il tipo di dati stringa di una variabile. Go ha un pacchetto integrato chiamato strconv che fornisce tre funzioni Atoi(), Sscanf() e ParseInt() per convertire la stringa Go in int.
Funzione Atoi() dal pacchetto strconv
Il pacchetto strconv implementa conversioni da e verso rappresentazioni di stringhe di tipi di dati di base. Per convertire una stringa in un numero intero, usiamo la funzione Atoi() dal pacchetto strconv. Atoi sta per ASCII to integer.
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)
}
}
Produzione:
Datatype of age before conversion : string
After Conversion:
int, 13
Se la stringa di input non è nel formato intero, la funzione restituisce zero.
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)
}
Produzione:
Datatype of age before conversion : string
After Conversion:
int, 0
Funzione ParseInt() dal pacchetto strconv
Il metodo strconv.ParseInt(s, base, bitSize) interpreta la stringa di input s nella base (da 0, 2 a 36) e nella dimensione in bit (da 0 a 64) e restituisce un numero intero corrispondente. Atoi(s) è equivalente a 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))
}
Produzione:
Value of x before conversion: 123
Datatype of x before conversion: string
Value after conversion: 123
Datatype after conversion: int64
Metodo fmt.Sscanf
fmt.Sscanf() è ottimo per analizzare stringhe personalizzate contenenti un numero. La funzione Sscanf() analizza la stringa dell’argomento, memorizzando i valori separati da spazi successivi in argomenti successivi come definito dal formato e restituisce il numero di elementi analizzati con successo.
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)
}
}
Produzione:
234
Confronto dei metodi
strconv.ParseInt() è il più veloce di tutti i metodi, strconv.Atoi() è un po’ più lento di strconv.ParseInt() e fmt.Sscanf() è il più lento di tutti ma il metodo più flessibile.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn