是否可以在 go 中编写“流畅”风格的 api?

其他几种语言具有“流畅”或链式调用风格的 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 语法似乎不支持这一点。


你可以在 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中是不可能的?


摇曳的蔷薇
浏览 190回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go