Добавление структурных указателей к фрагменту указателей интерфейса - PullRequest
0 голосов
/ 20 марта 2020

У меня есть интерфейс и структура, реализующая его:

package main

import "fmt"

type Vehicle interface {
    GetColor() string
    SetColor(color string)
}

type Car struct {
    Color string
}

func (car *Car) SetColor(color string) {
    car.Color = color
}

func (car *Car) GetColor() string {
    return car.Color
}

func NewCar(color string) *Car {
    car := new(Car)
    car.Color = color

    return car
}

func main() {
    car := NewCar("red")
    vehicles := make([]Vehicle, 0)
    vehicleSelection := make([]*Vehicle, 0)

    vehicles = append(vehicles, car)
    vehicleSelection = append(vehicleSelection, car) //DOES NOT WORK!

    for _, vehicle := range vehicleSelection {
        vehicle.SetColor("blue") //DOES NOT WORK!
    }

    for _, vehicle := range vehicles {
        fmt.Println(vehicle.GetColor())
    }
}

Я хочу иметь подмножество (vehicleSelection срез) всех моих транспортных средств (vehicles срез). Все изменения, внесенные в транспортные средства в срезе vehicleSelection, также должны отражаться транспортными средствами в срезе vehicles. Поэтому я хочу, чтобы срез vehicleSelection был срезом указателей. Как я могу добавить cars к этому срезу?

...