У меня есть массив структур.Учет списка в 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))
.
(Игнорирование испорченного синтаксиса в вашем примере): Нет. Это почти так, как вы это делаете. В Go нет ни понимания списка, ни карты, и циклы очень идиоматичны. –
Это фрагмент структур, а не массив. В go массивы и кусочки совершенно разные! [Вот окончательный источник.] (Http://golang.org/doc/articles/slices_usage_and_internals.html) –