Учет списка в Go - программирование

Учет списка в Go

У меня есть массив структур.

var a = [] struct {
    f1 string
    f2 string
}{
    {"foo", "bar"},
    {"biz", "baz"},
}

Я хочу передать массив полей f2 в функцию, например

var f2s []string
for _, s := range a {
    f2s = append.f2s(s.f2)
}
// f2s = {"bar", "baz"}
SomeFunc(f2s)

Есть ли более идиоматический способ сделать это? В Python я бы сделал SomeFunc([s.f2 for s in a]). В функциональном языке я бы сделал (SomeFunc (map (lambda (s) (s.f2)) a)).

4b9b3361

Ответ 1

Нет, у Go нет никакого принуждения к списку или тому подобное. Ваш код выглядит отлично. Для более длинных фрагментов лучше выделить соответствующую длину с помощью make.

Ответ 2

Нет, искренне, они бы этого не сделали.

Понимание карт и списков является общепринятым, чтобы считаться основным на любом современном языке.

Это хороший язык с прекрасными идеями, но я все еще далеко от того, чтобы быть удобным, и часто, когда я чувствую, что мой код грязный, даже когда это идиоматический, хорошо структурированный код в способе "Пойти". p >

Надеюсь, что это изменится в будущем.