首页 > 解决方案 > 如何将切片和数组组合成地图

问题描述

我正在尝试在 Go 中创建一个莫尔斯电码地图。我该怎么做呢?如果这样更容易的话,我也可以将一个切片转换为一个数组。

   alphabet := []string{}
    for i := 'A'; i <= 'Z'; i++ {
        alphabet = append(alphabet, string(i))
    }
    fmt.Println(alphabet)
    
    morseSlice := [26]string{".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."}
    
    // convert to map that maps letters to morse
    var morseDict map[string]string
    
    for i := 0; i > len(morseSlice); i++ {
        morseDict[alphabet[i]] = morseSlice[i]
    }
    
    fmt.Println(morseDict)

但我的地图是空的。我究竟做错了什么?

标签: go

解决方案


您的代码将引发错误assignment to entry in nil map。要解决这个问题,您需要对其进行初始化。

elementMap := make(map[string]string) //Initialize

并且您的条件应该更改为,less than或者您可以使用range

for i, ele := range alphabet {
  elementMap[ele] = morseSlice[i]
}

操场


推荐阅读