Go语言的链式调用

125 阅读1分钟

Go语言的链式调用


今天在看代码的时候看到一种很有意思的写法,问了chatgpt之后知道叫做链式调用,下面简单介绍一下链式调用。

链式调用是一种编程方法,他允许在同一段代码中调用多个方法,每个方法返回的是它本身或者返回的另一个对象,这个在使用jwt生成一个令牌的时候非常有用,使得代码清晰易读。下面简单的介绍一下用法。

type builder struct {
    value string
}

func (b *builder) setvalue(v string) *builder {
    b.value = v
    return b
}

func (b *builder) appendvalue(v string) *builder {
    b.value += v
    return b
}

func (b *builder) build() string {
    return b.value
}
func main() {
    b := &builder{}
    result := b.setvalue("hello").appendvalue(",world").build()
    fmt.Println(result)

}

输出结果为hello,world
其实,链式调用在一些库里面已经使用的很频繁了,比如我们常见的gorm就使用到了链式调用来查询和调用数据库等等。

result := db.Select("name", "age").Find(&users)

链式调用总结

优点总结

  • 简洁性:减少了重复代码,使代码更简洁。
  • 可读性:使代码逻辑更容易理解,顺序执行显而易见。
  • 流畅性:通过流式接口,可以自然地表达操作步骤和数据处理流程。

缺点

  • 调试困难:如果链式调用中出现错误,调试可能会比较困难,因为所有方法都在一行中调用。
  • 可维护性:长的链式调用可能会影响可维护性,特别是如果链条非常长或方法有副作用时。

总之,链式调用在需要逐步配置对象或数据处理的场景中特别有用,但应注意保持代码的可读性和可维护性。