Scansione dell'input
Leggere input formattato
Scansione dell'input è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.
Leggere l'input con fmt
Il pacchetto fmt può leggere i valori, non solo stamparli. Le funzioni di scansione analizzano il testo e lo inseriscono in variabili tipizzate.
Sono l'equivalente inverso delle funzioni di stampa.
package main
import "fmt"
func main() {
var n int
fmt.Sscan("42", &n)
fmt.Println(n + 1)
}Sono necessari i puntatori
Le funzioni di scansione devono memorizzare un risultato, quindi si passa l'indirizzo di ogni variabile usando &.
Dimenticare & è l'errore di scansione più comune.
package main
import "fmt"
func main() {
var a, b int
fmt.Sscan("3 4", &a, &b)
fmt.Println(a + b)
}Sscan divide in base agli spazi
fmt.Sscan legge da una stringa valori separati da spazi e li assegna a più variabili, determinando il tipo dal puntatore di ciascuna.
package main
import "fmt"
func main() {
var name string
var age int
fmt.Sscan("Ada 36", &name, &age)
fmt.Println(name, age)
}Sscanf usa un formato
fmt.Sscanf analizza il testo in base a una stringa di formato, proprio come Printf al contrario. I caratteri letterali nel formato devono corrispondere all'input.
package main
import "fmt"
func main() {
var h, m int
fmt.Sscanf("09:05", "%d:%d", &h, &m)
fmt.Println(h, m)
}Controllare quanti valori sono stati letti
Le funzioni di scansione restituiscono il numero di elementi analizzati correttamente e un errore. Controlli il numero per sapere se l'analisi è riuscita completamente.
package main
import "fmt"
func main() {
var a, b int
count, _ := fmt.Sscan("7", &a, &b)
fmt.Println("parsed:", count)
}Gestire gli errori di analisi
Se l'input non corrisponde al tipo previsto, viene restituito un errore. Lo verifichi sempre quando l'input è reale.
package main
import "fmt"
func main() {
var n int
_, err := fmt.Sscan("notanumber", &n)
if err != nil {
fmt.Println("error:", err)
}
}Analizzare tipi misti
È possibile leggere diversi tipi in un'unica chiamata. Il tipo di ciascun puntatore determina come viene analizzato il relativo token.
package main
import "fmt"
func main() {
var word string
var price float64
var ok bool
fmt.Sscan("apple 1.50 true", &word, &price, &ok)
fmt.Println(word, price, ok)
}Sscanf con testo letterale
Sscanf è ideale per formati fissi come coordinate o coppie chiave-valore, in cui la punteggiatura separa i numeri.
package main
import "fmt"
func main() {
var x, y int
fmt.Sscanf("(3,8)", "(%d,%d)", &x, &y)
fmt.Println(x, y)
}Leggere i numeri in virgola mobile
Utilizzi %f in Sscanf oppure un *float64 in Sscan per leggere numeri decimali.
package main
import "fmt"
func main() {
var temp float64
fmt.Sscanf("21.5C", "%fC", &temp)
fmt.Println(temp)
}Scan e stdin
fmt.Scan e fmt.Scanf leggono dall'input standard nello stesso modo in cui Sscan legge da una stringa. Le regole di analisi sono identiche; cambia solo la fonte.
package main
import "fmt"
func main() {
line := "100 200"
var a, b int
fmt.Sscan(line, &a, &b)
fmt.Println(a * b)
}Un piccolo parser
Combini la scansione con un calcolo per analizzare un record e produrre un risultato.
package main
import "fmt"
func main() {
var name string
var qty int
var unit float64
fmt.Sscanf("pen 3 1.25", "%s %d %f", &name, &qty, &unit)
fmt.Printf("%s total: $%.2f\n", name, float64(qty)*unit)
}Verifica rapida
Che cosa deve passare a una funzione di scansione per memorizzare il risultato?
Riepilogo: analizzare l'input
Ha imparato a leggere input formattato:
Sscandivide in base agli spazi;Sscanfsegue una stringa di formato.- Passi i puntatori con
&per ogni destinazione. - Controlli il numero e l'errore restituiti per individuare input non validi.
package main
import "fmt"
func main() {
var d, mo, y int
fmt.Sscanf("30/05/2026", "%d/%d/%d", &d, &mo, &y)
fmt.Println(y, mo, d)
}Impara Go con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 51
- Lezioni
- 203
Domande Frequenti
La lezione «Scansione dell'input» è gratuita?
Sì — il testo completo di «Scansione dell'input» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.
Cosa imparerò in «Scansione dell'input»?
Leggere input formattato Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Go Academy?
Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Scansione dell'input»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Go Academy?
Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Verbi di Printf
- Sprintf e Fprintf
- L'interfaccia Stringer
- Scansione dell'input