18

我有一个结构数组。

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))

4

2 回答 2

10

不,Go 没有列表强制或类似的东西。你的代码看起来不错。对于较长的切片,最好使用 make 分配适当的长度。

于 2013-07-02T00:37:35.087 回答
7

不,说真的,他们不会。

地图和列表理解是主流,足以被认为是任何现代语言的基础。

这是一门很好的语言,有很好的想法,但我仍然很不适应,而且我经常觉得我的代码很脏,即使它是惯用的、结构良好的 Go 做事方式的代码。

希望这种情况在未来有所改变。

于 2014-09-14T07:22:31.720 回答