从标准输入中读取地图密钥

EdoardoSchnell:

我有一个从字符串到整数的映射,我想通过从stdin读取键来选择一个值。很简单,您可能会说:

  package main
  import (
           "os"
           "bufio"
           "fmt"
  )
 
 func main() {
         m := map[string]int {
                 "Hello": 1,
                 "Map": 2,
         }
 
         reader := bufio.NewReader(os.Stdin)
         text, err := reader.ReadString('\n')
 
         if err != nil {
                 fmt.Println("Error", err)
                 return
         }
 
         fmt.Println(m[text])
 }

当向控制台写入“ Hello”时,将输出0,而不是1。

意见:

如果我猜的话,可以在reader.ReadString用户输入后面加上\n所以这个text领域最终被Hello\n

使用budio.NewScanner()可解决此问题:

func main() {
    m := map[string]int{
        "Hello": 1,
        "Map":   2,
    }

    scanner := bufio.NewScanner(os.Stdin)
    scanner.Scan()
    text := scanner.Text()

    fmt.Println(m[text])
}

输出:

$ go run main.go
Hello
1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章