2017-02-12 29 views
1

以下是我需要的代碼打印數組中每個值的出現次數。GoLang打印陣列中值的次數次數

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

但不是構建我的字典,我希望像,字典[10]應該有值2 樣品期望輸出:

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

錯誤我:恐慌:分配進入in nil map

回答

2

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

修復該問題後,您還需要處理dict[num] = count+1中的邏輯錯誤,其中該值的計數設置爲1(計數始終爲0),而不是先前的值多一個。

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]