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

时间:2017-02-12 04:16:52

标签: 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)
}

但我无法按照我的意愿构建字典,dict [10]应该具有值2。 预期输出样本:

dict[10] = 2
dict[20] = 2
dict[30] = 1  

我得到的错误:恐慌:在nil地图中输入作品

2 个答案:

答案 0 :(得分:2)

您需要使用非零地图初始化<div class='ellipsis'> <div class='content'> <div class='text'>text text text text text text text text text text text text text text text text text text text text text </div> <div class='overlay'> <div class='placeholder'></div> <div class='more'>...<a href="http://hai.li">more</a></div> </div> </div> </div>;一种方式是使用dict

修复后,您还需要处理var dict = make(map[int]int)中的逻辑错误,其中该值的计数设置为1(计数始终为0),而不是前一个值的一个。

答案 1 :(得分:2)

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)
}

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