代替以要求的格式打印,它以无序格式打印

时间:2018-07-05 06:03:03

标签: go

package main

import (
  "fmt"
  "bufio"
  "os"
  "strconv"
)
func main() {
 mp := make(map[int]string)//make a mapping
 in := bufio.NewScanner(os.Stdin)
 fmt.Println("Limit and Enter Strings")
 in.Scan()
 n := in.Text()
 num, err := strconv.Atoi(n)
 fmt.Println(err)
 for i:=0; i<=num;i++ {
   in.Scan()
   mp[i] = in.Text()
 }
 fmt.Println(mp)
}
/* Output Limit and Enter Strings
5
<nil>
one
two
three
four
five
six
map[3:four 4:five 5:six 0:one 1:two 2:three]*/

该程序用于进行从int到字符串的映射。当我以顺序格式输入数字时,它将以错误的顺序打印映射。

2 个答案:

答案 0 :(得分:1)

  

Go提供了实现哈希表的内置地图类型。

     

在具有范围循环的地图上进行迭代时,迭代顺序为   未指定,并且一次迭代不能保证相同   到下一个。从Go 1开始,运行时将地图迭代顺序随机化,如下所示:   程序员依靠先前版本的稳定迭代顺序   实施。如果您需要稳定的迭代顺序,则必须   维护一个指定该顺序的单独数据结构。这个   示例使用单独的键排序片来打印map [int] string   按关键顺序:

导入“排序”

regressor.fit(X_train, y_train, epochs = 100, batch_size = 32)

链接:https://blog.golang.org/go-maps-in-action

答案 1 :(得分:1)

Go语言的地图未按顺序进行迭代(有关更多信息,请查看https://blog.golang.org/go-maps-in-action)。这就像一个哈希。如果需要订购,建议您考虑将键存储在切片中(除了将键值对存储在地图中),然后当您需要按输入的顺序打印时,遍历切片以获取键,然后从哈希中检索每个键的值。