[Golang·输入]Golang中标准输入读取文本的实现方式

  • 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
      
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值