我正在尝试将一些 C 移植到 Go。
我本质上是在寻找类似于 Haskell 的东西 find :: (a -> Bool) -> [a] -> Maybe a
我有(粗略地)这个 C 用于通过迭代在“列表”中查找项目:
struct foo {
struct foo *next;
char *name;
}
struct foo *foo_list;
// Snip
struct foo *foo = NULL;
for (f = foo_list; f; f = f->next) {
if (!strcmp("bar", f->name) {
foo = f;
}
}
if (foo)
// Stuff
我怎样才能在 Go 中很好地、惯用地做到这一点?
“名单”可能很小;性能特征不是特别有趣。
我可能想要一个slice,还是一个list?Foos 或*Foos 的“列表” ?
我目前有以下内容,但我怀疑它不是特别“惯用的围棋”!
var FooTable *list.List
// Snip
var foo *Foo = nil
for e := FooTable.Front(); e != nil; e = e.Next() {
if e.Value.(*Foo).name == "bar" {
foo = e.Value.(*Foo)
break
}
}
Helenr
相关分类