Go : assignment to entry in nil map
Solution 1
The Go Programming Language Specification
A new, empty map value is made using the built-in function make, which takes the map type and an optional capacity hint as arguments:
make(map[string]int) make(map[string]int, 100)
The initial capacity does not bound its size: maps grow to accommodate the number of items stored in them, with the exception of nil maps. A nil map is equivalent to an empty map except that no elements may be added.
You write:
var countedData map[string][]ChartElement
Instead, to initialize the map, write,
countedData := make(map[string][]ChartElement)
Solution 2
Another option is to use a composite literal:
countedData := map[string][]ChartElement{}
https://golang.org/ref/spec#Composite_literals
Altenrion
Certified engineer of automation. Like girls, love php, adore Linux.
Updated on February 09, 2021Comments
-
Altenrion about 3 years
When trying to set value to the
map
(countedData
) in the below code, I am getting an error that says,assignment to entry in nil map
.func receiveWork(out <-chan Work) map[string][]ChartElement { var countedData map[string][]ChartElement for el := range out { countedData[el.Name] = el.Data } fmt.Println("This is never executed !!!") return countedData }
Println
does not execute (as the error occurs on a lien before that).There are some goroutines , that are sending data to channel, and
receiveWork
method should be making a map like this:map => "typeOne" => [ ChartElement, ChartElement, ChartElement, ], "typeTwo" => [ ChartElement, ChartElement, ChartElement, ]
Please help me fix the error.