我有一个从字符串到整数的映射,我想通过从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
关于dictionary - 从标准输入中读取 map key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63237682/