MySQL Java JavaScript PHP Python HTML-CSS C-sharp C++ Go

Citirea din consolă

În Go există obiectul os.Stdin, care implementează interfața io.Reader și permite citirea datelor de la consolă. De exemplu, putem folosi funcția fmt.Fscan() pentru a citi de la consolă folosind os.Stdin:

package main
import (
    "fmt"
    "os"
)

func main() {
    var name string
    var age int
    fmt.Print("Introduceți numele: ")
    fmt.Fscan(os.Stdin, &name) 
     
    fmt.Print("Introduceți vârsta: ")
    fmt.Fscan(os.Stdin, &age)
     
    fmt.Println(name, age)
}

La rularea programului, vom putea introduce date de la consolă, iar acestea vor fi transmise în variabilele name și age:

Introduceți numele: Tom
Introduceți vârsta: 24
Tom 24

Totuși, pentru a obține intrarea de la consolă, putem folosi funcțiile încorporate fmt.Scan(), fmt.Scanln() și fmt.Scanf(), care sunt echivalente cu funcțiile fmt.Fscan(), fmt.Fscanln() și fmt.Fscanf():

func Scan(a ...interface{}) (n int, err error)
func Scanf(format string, a ...interface{}) (n int, err error)
func Scanln(a ...interface{}) (n int, err error)

Toate aceste funcții citesc deja datele din fluxul os.Stdin:

package main
import (
    "fmt"
    "os"
)

func main() {
    var name string
    var age int
    fmt.Print("Introduceți numele: ")
    fmt.Scan(&name) 
    fmt.Print("Introduceți vârsta: ")
    fmt.Scan(&age)
     
    fmt.Println(name, age)
}

sau astfel:

package main
import (
    "fmt"
    "os"
)

func main() {
    var name string
    var age int
    fmt.Print("Introduceți numele și vârsta: ")
    fmt.Scan(&name, &age)
    fmt.Println(name, age)
     
    // varianta alternativă
    //fmt.Println("Introduceți numele și vârsta:")
    //fmt.Scanf("%s %d", &name, &age)
    //fmt.Println(name, age)
}

În cazul în care sunt introduse mai multe valori deodată, separatorul între ele este spațiul. Deși teoretic un șir poate conține spații interne, aceste funcții citesc valoarea șirului și ale altor tipuri de date până la primul spațiu:

Introduceți numele și vârsta: Tom 34
Tom 34