// 从控制台读取输入:package main
import"fmt"var(
firstName, lastName, s string
i int
f float32
input ="56.12 / 5212 / Go"
format ="%f / %d / %s")funcmain(){
fmt.Println("Please enter your full name: ")// Scanln() 扫描来自标准输入的文本,将空格分隔的值依次存放到后续的参数内,直到碰到换行。// Scanf() 与其类似,除了 Scanf() 的第一个参数用作格式字符串,用来决定如何读取。// 这里需要注意一下,有两个参数,就只读取空格为分隔的两个输入参数,多个的话,后面的空格分隔的数据直接舍弃了,你如果要读取三个,那么这里就得有三个入参
fmt.Scanln(&firstName,&lastName)// fmt.Scanf("%s %s", &firstName, &lastName)
fmt.Printf("Hi %s %s!\n", firstName, lastName)// Hi Chris Naegels// Sscan... 和以 Sscan... 开头的函数则是从字符串读取,除此之外,与 Scanf() 相同。如果这些函数读取到的结果与您预想的不同,您可以检查成功读入数据的个数和返回的错误。
fmt.Sscanf(input, format,&f,&i,&s)
fmt.Println("From the string we read: ", f, i, s)// 输出结果: From the string we read: 56.12 5212 Go}
使用 bufio 包提供的缓冲读取器 (buffered reader) 来读取数据
package main
import("fmt""bufio""os")// 声明变量// inputReader 是一个指向 bufio.Reader 的指针var inputReader *bufio.Reader
var input stringvar err errorfuncmain(){// inputReader := bufio.NewReader(os.Stdin) 这行代码,将会创建一个读取器,并将其与标准输入绑定。
inputReader = bufio.NewReader(os.Stdin)
fmt.Println("Please enter some input: ")
input, err = inputReader.ReadString('\n')if err ==nil{
fmt.Printf("The input was: %s\n", input)}}
package main
import("fmt""os""bufio")funcmain(){
inputReader := bufio.NewReader(os.Stdin)
fmt.Println("Please enter your name:")
input, err := inputReader.ReadString('\n')if err !=nil{
fmt.Println("There were errors reading, exiting program.")return}
fmt.Printf("Your name is %s", input)// For Unix: test with delimiter "\n", for Windows: test with "\r\n"switch input {case"Philip\r\n": fmt.Println("Welcome Philip!")case"Chris\r\n": fmt.Println("Welcome Chris!")case"Ivo\r\n": fmt.Println("Welcome Ivo!")default: fmt.Printf("You are not welcome here! Goodbye!")}// version 2: // 加了fallthrough后,会直接运行【紧跟的后一个】case或default语句,不论条件是否满足都会执行 switch input {case"Philip\r\n":
fmt.Println("this is philip test fallthrough")fallthroughcase"Ivo\r\n":
fmt.Println("this is Ivo test fallthrough")fallthroughcase"Chris\r\n":
fmt.Printf("Welcome %s\n", input)default:
fmt.Printf("You are not welcome here! Goodbye!\n")}// version 3:switch input {case"Philip\r\n","Ivo\r\n": fmt.Printf("Welcome %s\n", input)default: fmt.Printf("You are not welcome here! Goodbye!\n")}}