GoLang 打印数组中值的出现次数

ath*_*uli 5 arrays go

以下是我需要打印数组中每个值的出现次数的代码。

package main

import "fmt"

func main(){
    //Initialize an array 
    inputArray := []int{10,20,30,56,67,90,10,20}
    printUniqueValue(inputArray)
}

func printUniqueValue( arr []int){
    //Create a   dictionary of values for each element
    var  dict map[int]int 
    count := 0
    for _ , num :=  range arr {
        dict[num] = count+1
    }
    fmt.Println(dict)
}
Run Code Online (Sandbox Code Playgroud)

但是我不能像我希望的那样构造字典,dict[10] 应该有值 2。示例预期输出:

dict[10] = 2
dict[20] = 2
dict[30] = 1  
Run Code Online (Sandbox Code Playgroud)

我得到的错误:恐慌:分配到 nil 地图中的条目

csh*_*shu 9

package main

import "fmt"

func main(){
    //Initialize an array 
    inputArray := []int{10,20,30,56,67,90,10,20}
    printUniqueValue(inputArray)
}

func printUniqueValue( arr []int){
    //Create a   dictionary of values for each element
    dict:= make(map[int]int)
    for _ , num :=  range arr {
        dict[num] = dict[num]+1
    }
    fmt.Println(dict)
}
Run Code Online (Sandbox Code Playgroud)

这打印 map[67:1 90:1 10:2 20:2 30:1 56:1]


and*_*olm 5

您需要dict使用非零映射进行初始化;一种方法是使用var dict = make(map[int]int).

修复该问题后,您还需要处理 中的逻辑错误dict[num] = count+1,其中该值的计数设置为 1(计数始终为 0)而不是比前一个值多一个。