Моя цель - объявить пустой 2D-массив, который затем инициализируется и затем заполняется значениями при каждом запуске do (). Проблема в том, что я получаю разыменование нулевого указателя, хотя я инициализирую массив.
Это простая версия того, что я пытаюсь выполнить на симуляторе сервера.
package main
import "fmt"
type Srv struct {
A *[][]int
}
func (s Srv) init() {
arr := make([][]int, 0)
*s.A = arr
}
func main() {
s := Srv{nil}
s.init()
printSlice(*s.A)
do(s.A)
do(s.A)
}
func printSlice(s [][]int) {
fmt.Printf("len=%d cap=%d %v\n", len(s), cap(s), s)
}
func do(s *[][]int) {
*s = append(*s, make([]int, 0))
printSlice(*s)
(*s)[0] = append((*s)[0], 5)
(*s)[0] = append((*s)[0], 6)
*s = append(*s, make([]int, 0))
printSlice(*s)
}
Я ожидаю вывод наподобие [[5 6 5 6] [] [] []], но вместо этого получаю разыменование нулевого указателя.