以下是我需要打印数组中每个值的出现次数的代码。
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 地图中的条目
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]
您需要dict使用非零映射进行初始化;一种方法是使用var dict = make(map[int]int).
修复该问题后,您还需要处理 中的逻辑错误dict[num] = count+1,其中该值的计数设置为 1(计数始终为 0)而不是比前一个值多一个。
| 归档时间: |
|
| 查看次数: |
4959 次 |
| 最近记录: |