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