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.