Go 围棋中的列表理解

Go 围棋中的列表理解,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中,

我有一个结构数组

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表示a中的s])
。在函数式语言中,我会执行
(SomeFunc(map(lambda(s)(s.f2))a)

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

不,老实说,他们不会

地图和列表理解是主流,在任何现代语言中都被认为是基本的

这是一种很好的语言,有着很好的想法,但我仍然感到很不舒服,而且很多时候我觉得我的代码很脏,即使它是惯用的、结构良好的代码


希望将来能有所改变。

(忽略示例中糟糕的语法):不,你就是这么做的。Go中既没有列表理解,也没有映射,循环非常惯用。这是结构的一部分,而不是数组。In-go数组和切片非常不同!啊,那真是太遗憾了,我不确定在这种情况下,清晰度是否值得如此冗长,但我想围棋设计师们会比我更清楚:)切片的长度有多长?@Willem,这要看情况而定。量。在适当的载荷和条件下。