Простой код, сохраняющий объекты типа car
в массив типа car
. Я пытаюсь использовать указатель здесь для передачи ссылки на массив.
Есть 2 проблемы:
1 - Я не могу инициализировать его как пустой массив. Когда я использую make
, он говорит:
не может сделать тип * [] автомобиль
2 - Если я не использую make
, возникает ошибка времени выполнения:
паника: ошибка во время выполнения: неверный адрес памяти или разыменование нулевого указателя
Код:
import "fmt"
type car struct {
plate string
color string
}
func main() {
var _cars *[]car // list of cars
_cars = make(*[]car, 4) // initialize empty cars list
saveCar(_cars, car{"ABC-123", "Black"})
saveCar(_cars, car{"ABC-456", "Black"})
saveCar(_cars, car{"ABC-789", "Black"})
fmt.Println(_cars)
}
func saveCar(_cars_list *[]car, _car car) int {
for index, current := range *_cars_list {
// if empty place found, save car
if (car{}) == current {
// save car
(*_cars_list)[index] = _car
// return the saved index
return index
}
}
return -1
}