Go Academy · Lezione

Scansione dell'input

Leggere input formattato

Lezione 4 di 413 passaggi

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:

  • Sscan divide in base agli spazi; Sscanf segue 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)
}
Gratis per iniziare

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

  1. Verbi di Printf
  2. Sprintf e Fprintf
  3. L'interfaccia Stringer
  4. Scansione dell'input
← Torna a Go Academy