其他几种语言具有“流利”或链式调用风格的 api,它允许您执行如下调用:
public class CatMap : ClassMap<Cat>
{
public CatMap()
{
Id(x => x.Id);
Map(x => x.Name)
.Length(16)
.Not.Nullable();
Map(x => x.Sex);
References(x => x.Mate);
HasMany(x => x.Kittens);
}
}
值得注意的例子包括 fluent nhibernate、jquery 方法链接等。它是一种常见的(我会说非常受欢迎的)api 设计模式。
问题:go 语法似乎不支持这一点。
你可以这样做:
var blah = X().Y().Thing().OtherThing()
...但是这个:
package main
import "n"
func main() {
n.Log(":D")
.Example()
.Example
}
结果是:
> command-line-arguments
> ./app.go:7: syntax error: unexpected .
...基本上,因为 go 会自动在行尾插入 ;。
任何人都知道是否有办法解决这个问题?
你能禁用自动吗?以某种方式在一个街区?
或者这种 api 在 go 中是不可能的?