func getUserInput() {
fmt.Print("Please give me your name: ")
var name string
// Scan scans text read from standard input, storing successive space-separated values into successive arguments.
// Newlines count as space. It returns the number of items successfully scanned.
// If that is less than the number of arguments, err will report why.
fmt.Scan(&name)
fmt.Printf("Your name is %s.\n", name)
fmt.Print("Please give me your country: ")
var country string
// Scanln is similar to Scan, but stops scanning at a newline and after the final item there must be a newline or EOF.
fmt.Scanln(&country)
fmt.Printf("Your country is %s.\n", country)
}
zzh@ZZHPC:/zdata/Github/mastering-go-expertise$ go run .
Please give me your name: Zhang Zhihui
Your name is Zhang.
Please give me your country: Your country is Zhihui.
func getUserInput() {
fmt.Print("Please give me your name: ")
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan() // use `for scanner.Scan()` to keep reading
line := scanner.Text()
fmt.Printf("Your name is %s.\n", line)
fmt.Print("Please give me your country: ")
var country string
fmt.Scanln(&country)
fmt.Printf("Your country is %s.\n", country)
}
zzh@ZZHPC:/zdata/Github/mastering-go-expertise$ go run .
Please give me your name: Zhang Zhihui
Your name is Zhang Zhihui.
Please give me your country: China
Your country is China.
func getUserInput() {
fmt.Print("Please give me your name: ")
reader := bufio.NewReader(os.Stdin)
line, err := reader.ReadString('\n')
if err != nil {
panic(err)
}
fmt.Printf("Your name is %s.\n", line)
fmt.Print("Please give me your country: ")
var country string
fmt.Scanln(&country)
fmt.Printf("Your country is %s.\n", country)
}
zzh@ZZHPC:/zdata/Github/mastering-go-expertise$ go run .
Please give me your name: Zhang Zhihui
Your name is Zhang Zhihui
.
Please give me your country: China
Your country is China.