Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Map 如何使用存储在Go变量中的字符串键访问地图条目?_Map_Go - Fatal编程技术网

Map 如何使用存储在Go变量中的字符串键访问地图条目?

Map 如何使用存储在Go变量中的字符串键访问地图条目?,map,go,Map,Go,因此,我有一个Go变量表映射[string]string,其中包含一些条目。我可以按预期使用字符串键访问映射值: table["key"] // ok 但是当我尝试使用从os.Stdin检索到的字符串键访问地图时 reader, _ := bufio.NewReader(os.Stdin) key, _ := reader.ReadString('\n') // type "key" (no quotations), press enter value, _ := table[key] //

因此,我有一个Go变量
表映射[string]string
,其中包含一些条目。我可以按预期使用字符串键访问映射值:

table["key"] // ok
但是当我尝试使用从
os.Stdin
检索到的字符串键访问地图时

reader, _ := bufio.NewReader(os.Stdin)
key, _ := reader.ReadString('\n') // type "key" (no quotations), press enter
value, _ := table[key] // no value :(

有什么问题吗?

关于ReadString的文档中说:

ReadString一直读取,直到输入中第一次出现delim,返回一个包含数据的字符串,该字符串最多包含分隔符


因此,key变量包含key string plus\n(或Windows上的\r\n),并且在映射中找不到它。

请确保您的key不包含以下所包含的分隔符“
\n
”:

(更一般地说,不要忽略返回值,尤其是错误)

请参见下面的可运行(!)示例:

它将显示一个键,该键等于:

'key2
'
,例如:

输出:

Enter a key (followed by Return):
val for key 'key2' = 'val2'(true)

好的,基本上我只需要
字符串。修剪输入。谢谢@marcioAlmada trim,或
input[:len(input)-1]
,因为我已经编辑了答案。没有说明。不确定
'\n'
是否与所有平台兼容,顺便说一句。可能在windows上您需要使用
'\r'
?@marcioAlmada true,我已将其替换为
input=strings.Trim(input,“\r\n”)
input = strings.TrimRight(input, "\r\n")
Enter a key (followed by Return):
val for key 'key2' = 'val2'(true)