输入


fmt包命令行参数输入

  • 碰到第一个空格或者换行符之前的内容赋值给变量
  • 如果有多个变量使用空格或者换行符进行分割
  • 如有未读入变量,则会等待输入 ```go var arg1 string var arg2 string

_, err := fmt.Scan(&arg1, &arg2) if err != nil { return } else { fmt.Printf(“arg1 : %s\n”, arg1) fmt.Printf(“arg2 : %s\n”, arg2) }

  1. - 遇到换行符时直接结束,未读入的变量值为零值,并返回错误
  2. - 若输入值超出变量数,则返回错误
  3. ```go
  4. var arg1 string
  5. var arg2 string
  6. _, err := fmt.Scanln(&arg1, &arg2)
  7. if err != nil {
  8. return
  9. } else {
  10. fmt.Printf("arg1 : %s\n", arg1)
  11. fmt.Printf("arg2 : %s\n", arg2)
  12. }

bufio等待接收输入

  1. inputReader := bufio.NewReader(os.Stdin)
  2. // 以换行符截取
  3. input, _ := inputReader.ReadString('\n')
  4. fmt.Println("hello", input)

以上代码运行后会等待用户输入并根据换行符截取

输出


fmt

  1. // 换行打印到标准终端
  2. fmt.Println("hello")
  3. // 格式化输出
  4. fmt.Printf(
  5. "%s %d %v %f %.2f %p %T %+v",
  6. "hello", // 字符串
  7. 1, // 整数
  8. []int{1, 2, 3}, // 值
  9. 3.14, // 浮点数
  10. 3.1415926, // 保留两位小数浮点数
  11. new([]int), // 指针
  12. [1]int{1}, // 类型
  13. struct {
  14. Name string
  15. Age int
  16. }{"dong", 18}, // 详细信息(struct字段等)
  17. )

bufio

  1. outputWriter := bufio.NewWriter(os.Stdin)
  2. _, err := outputWriter.WriteString("hello")
  3. _ = outputWriter.Flush()
  4. if err != nil {
  5. fmt.Println("写入失败")
  6. return
  7. }