他のいくつかの言語には、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);
}
}
注目すべき例には、流暢な nhibernate、jquery メソッド チェーンなどが含まれます。これは、一般的な (そして非常に愛されている) API 設計パターンです。
問題: go 構文はこれをサポートしていないようです。
これは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 では不可能ですか?