使用Golang进行方法链编程

我觉得可能还有更好的方法。

简单地

package main

import (
    "fmt"
)

type Term struct {
}

func (e *Term)ex1() *Term {
    fmt.Println("1")
    return e
}

func (e *Term)ex2() *Term {
    fmt.Println("2")
    return e
}


func (e *Term)ex3() *Term {
    fmt.Println("3")
    return e
}

func main() {
    e := &Term{}
    e.ex1().ex2().ex3()
}

例如,在数据库操作中

这里省略了错误处理、会话相关和实际处理的部分。

package main

type DbTerm struct {
    dbName string
    tableName string
}

func Db(dbName string) *DbTerm {
    term := &DbTerm{dbName, ""}
    return term
}

func (e *DbTerm) Table(tableName string) *DbTerm {
    term := &DbTerm{e.dbName, tableName}
    return term
}

func (e *DbTerm) Insert(data map[string]interface{}) error {
    //Insert処理
}

func main() {

    data := map[string]interface{} {"testkey":"testvalue"}

    err := Db("testdb").Table("testtable").Insert(data)

    if err != nil ...
}

bannerAds