- fmt.Scan
一行一行的输入一个参数或一行输入全部参数(用空格隔开)
var a, b int
fmt.Scan(&a, &b) // 1 2
fmt.Printf("(a + b): %v\n", (a + b)) // 3
-
fmt.Scanln
只能一行输入全部参数(用空格隔开)var a, b int fmt.Scanln(&a, &b) // 1 2 fmt.Printf("(a + b): %v\n", (a + b)) // 3
-
fmt.Scanf
只能一行输入全部参数,需要用指定的格式化方式输入
此例即输入"1: ? 2: ?"(双引号里为输入,?为输入的参数值)
var a, b int
fmt.Scanf("1: %v 2: %v", &a, &b) // 1: 1 2: 2
fmt.Printf("(a + b): %v\n", (a + b)) // 3
- bufio
-
ReadLine
返回不包括行尾字节的[]byte
可用string()得到字符串reader := bufio.NewReader(os.Stdin) input, _, _ := reader.ReadLine() // hello world fmt.Printf("input: %v\n", input) // [104 101 108 108 111 32 119 111 114 108 100] s := string(input) // 转字符串 fmt.Printf("string(input): %v\n", string(input)) // hello world
-
ReadBytes
一直读取,直到输入中第一次出现delim(通常设为’\n’)
返回一个包含数据的slice,该slice包含分隔符,可通过切片控制reader := bufio.NewReader(os.Stdin) input, _ := reader.ReadBytes('\n') // hello world s := string(input[:len(input)-1]) // 去掉尾部delim fmt.Printf("s: %v %v\n", s, len(s)) // hello world
-
ReadString
一直读取,直到输入中第一次出现delim(通常设为’\n’)
返回一个包含数据的字符串,该字符串包含分隔符,可用strings.TrimSpace()去除reader := bufio.NewReader(os.Stdin) input, _ := reader.ReadString('\n') // hello world input = strings.TrimSpace(input) // 去除首尾空格或换行符 fmt.Printf("input: %v\n", input) // hello world
-
NewScanner
scanner := bufio.NewScanner(os.Stdin) scanner.Scan() // 如果想保持活跃就 用永真循环,这样就能一直读 input := scanner.Text() // hello world fmt.Printf("input: %v\n", input) // hello world
-