Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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
String 映射字符串中的有序迭代_String_Go - Fatal编程技术网

String 映射字符串中的有序迭代

String 映射字符串中的有序迭代,string,go,String,Go,在Go博客中,这是如何按顺序打印地图 但是如果我有像var m map[string]string这样的字符串键 我不知道如何按顺序打印字符串(未按映射容器中创建字符串的顺序排序) 比如在我的操场上 如您所见,它一直在打印混乱的字符串,因此我尝试将整数值映射到map[string]string,但仍然无法确定如何映射map[string]string的每个元素 嗯,博客提到迭代顺序是随机的: “…当使用范围循环在映射上迭代时,不指定迭代顺序,也不保证从一次迭代到下一次迭代的顺序相同” 解决方案

在Go博客中,这是如何按顺序打印地图

但是如果我有像
var m map[string]string这样的字符串键

我不知道如何按顺序打印字符串(未按映射容器中创建字符串的顺序排序)

比如在我的操场上 如您所见,它一直在打印混乱的字符串,因此我尝试将整数值映射到
map[string]string
,但仍然无法确定如何映射
map[string]string
的每个元素


嗯,博客提到迭代顺序是随机的:

“…当使用范围循环在映射上迭代时,不指定迭代顺序,也不保证从一次迭代到下一次迭代的顺序相同”

解决方案有点琐碎,您有一个单独的切片,其中的键按需要排序:

“…如果需要稳定的迭代顺序,则必须维护指定该顺序的单独数据结构。”

因此,要按预期工作,请以正确的顺序创建一个额外的切片,然后迭代结果并按该顺序打印

order := []string{"i", "we", "he", ....}

func String(result map[string]string) string { 
   for _, v := range order { 
      if present in result print it, 
   }
   ... print all the Non-Defined at the end 
  return stringValue
}

看到它在这里运行:

你的意思是什么:按照在地图容器中创建字符串的顺序,你指的是它们在
accurial_99
中的位置?你能发布一个输入和输出的示例吗?看看你的代码()和你前面的问题(),看起来你真的在试图解决一个太复杂的问题,可能需要更仔细的设计和数据结构。为什么不问一个你真正想要实现什么的问题,而不是问很多关于你的实现的小问题(这可能不是很好的设计),你可能会对此感兴趣:因为看起来你在尝试自然语言处理,这一点都不微不足道。谢谢,它很有效,但我只是想知道我是否真的需要地图容器。之所以这样做,是因为go不支持在数组中查找元素的特定函数,这意味着每次需要查找元素时都需要遍历它,所以我选择map来查找某个元素。但这会变得非常复杂,所以我可能只使用数组。如果数组足够小,我认为迭代它将是一个非常快的操作。另一方面,使用map会快一点,如果您真的不需要打印,您可以继续使用最初的实现。无论如何,当您迭代贴图时(每次打印贴图时),问题就会出现。你真的需要把它们整理好吗?
order := []string{"i", "we", "he", ....}

func String(result map[string]string) string { 
   for _, v := range order { 
      if present in result print it, 
   }
   ... print all the Non-Defined at the end 
  return stringValue
}