Ответ 1
Нет, у Go нет никакого принуждения к списку или тому подобное. Ваш код выглядит отлично. Для более длинных фрагментов лучше выделить соответствующую длину с помощью make.
У меня есть массив структур.
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 нет никакого принуждения к списку или тому подобное. Ваш код выглядит отлично. Для более длинных фрагментов лучше выделить соответствующую длину с помощью make.
Нет, искренне, они бы этого не сделали.
Понимание карт и списков является общепринятым, чтобы считаться основным на любом современном языке.
Это хороший язык с прекрасными идеями, но я все еще далеко от того, чтобы быть удобным, и часто, когда я чувствую, что мой код грязный, даже когда это идиоматический, хорошо структурированный код в способе "Пойти". p >
Надеюсь, что это изменится в будущем.