亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從標準輸入讀取映射鍵

從標準輸入讀取映射鍵

Go
慕斯709654 2022-06-21 16:12:10
我有一個從字符串到整數的映射,我想通過從標準輸入讀取鍵來選擇一個值。很簡單,你可能會說:  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。
查看完整描述

2 回答

?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

如果我猜的話,使用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


查看完整回答
反對 回復 2022-06-21
?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

從文檔:

ReadString 讀取直到輸入中第一次出現 delim ,返回一個包含數據的字符串,直到并包括 delimiter。

如果您對字符串進行切片并刪除最后一個字符,它應該可以工作:

fmt.Println(m[text[:len(text)-1]])


查看完整回答
反對 回復 2022-06-21
  • 2 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號