为了账号安全,请及时绑定邮箱和手机立即绑定

简化 Go 代码

简化 Go 代码

Go
jeck猫 2021-08-16 19:24:10
我有两个函数,如下所示,它们看起来很相似,但使用不同的函数来查询 db。由于 Go 不鼓励重载方法,冗余是否可以接受?或者我应该将它们重构为一个函数?欢迎所有评论。var getCustomers = func() ([]customer, error) {    return nil, nil}var getCustomerById = func(int64) (*customer, error) {    return nil, nil}func listCustomer(w http.ResponseWriter, r *http.Request) *appError {    cus, err := getCustomers()    if err != nil {        return &appError{err, "No customer found", 404}    }    res, err := json.Marshal(cus)    if err != nil {        return &appError{err, "Can't display record", 500}    }    fmt.Fprint(w, string(res))    return nil}func viewCustomer(w http.ResponseWriter, r *http.Request, id int64) *appError {    cus, err := getCustomerByID(id)    if err != nil {        return &appError{err, "No customer found", 404}    }    res, err := json.Marshal(cus)    if err != nil {        return &appError{err, "Can't display record", 500}    }    fmt.Fprint(w, string(res))    return nil}建议使用 -1 列出所有客户,但我不确定这是否是最好的:func viewCustomer(w http.ResponseWriter, r *http.Request, id int64) *appError {    var c *customer    var clist []customer    var err error    if id < 0 {        clist, err = getCustomers()        res, err := json.Marshal(clist)        if err != nil {            return &appError{err, "Can't display record", 500}        }        fmt.Fprint(w, string(res))        return nil    } else {        c, err = getCustomerById(id)        res, err := json.Marshal(c)        if err != nil {            return &appError{err, "Can't display record", 500}        }        fmt.Fprint(w, string(res))        return nil    }}
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信