请问 model 里面的 func 什么情况下需要绑定 struct,什么情况下不需要绑定 struct 呢?

func 绑定 struct

框架、库

  • gin
  • gorm

未绑定 struct 代码

func GetUserByID(id int) (user User, err error) {
    if err = dbConn.Where(User{ID: id}).Find(&user).Error; err != nil {
        return
    }
    return
}

绑定 struct 代码

func (this *User) GetUserByID() (user User, err error) {
    if err = dbConn.Where(User{ID: this.ID}).Find(&user).Error; err != nil {
        return
    }
    return
}

问题

请问在写 model 方法的时候上述两种方式各自更适用于那种情况呢

讨论数量: 1

其实真要说起来,函数方法并无太大区别。

我认为你如果需要让某个结构体拥有专门的某个功能,则使用方法

比如:
你需要给一个用户生成一个Token码,需要用户信息,则写一个工厂方法(比如:NewToken())。

你如果想让某个功能的泛用性更高一些,可以使用函数

比如:
你需要转换许多结构体为另一个类型,仅仅只需一个函数,而不是需要为所有结构体都写同一个方法,显然是不合理的

总结一下,我推荐(是推荐!!!)。在需要为单一结构体实现某功能时,选择方法。当你需要为不止一个结构体实现某功能时,选择函数

此外,函数一般来说需要传入指针,但当你某个变量的值为指针时,你仅仅只需要传入变量名,但是这样不好的一点就是,不是很好区分。不如使用方法,可能更简洁更方便,看着更舒服。

以上为我个人建议,采取在于个人,我和你一样也在学习,希望我们都能学的更好!谢谢!

4年前 评论
gethinYan (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!