как получить слайс полей из слайса структур

package main

import (
    "fmt"
    "reflect"
)

type Car struct {
    Engine string
    Window string
    Wheel  string
}
func Main(){
Cars :=[]Car {{"asd","asdf","gds"},{"asd","qwf","vgd"}}
    fmt.Println(Cars[].Engine)
}

Ответы (1 шт):

Автор решения: Pak Uula

Нет, это так не работает. Нужно вручную собирать значения.

package main

import (
    "fmt"
)

type Car struct {
    Engine string
    Window string
    Wheel  string
}

func main() {
    cars := []Car{{"asd", "asdf", "gds"}, {"asd", "qwf", "vgd"}}
    engines := make([]string, len(cars))
    for i := range cars {
        engines[i] = cars[i].Engine
    }
    fmt.Println(engines)
}

Присваивание engines := make([]string, len(cars)) создаёт срез строк той же длины, что и массив автомобилей. В цикле копируем в него значения из массива автомобилей

    for i := range cars {
        engines[i] = cars[i].Engine
    }
→ Ссылка