以下是我的代码,我需要打印数组中每个值的出现次数。
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地图中输入作品
答案 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]