结构体的方法有使用需要指针,有时候直接用结构体名称,这个怎么定的

来源:4-17 gorm的表名自定义、自定义beforecreate逻辑

zifeng62573686180

2021-07-03 14:31:06

//func (l *Language) BeforeCreate(tx *gorm.DB) (err error){
// l.AddTime = time.Now()
// return
//}


//gorm中可以通过给某一个struct添加TableName方法来自定义表名
//func (Language) TableName() string{
// return "my_language"
//}


写回答

1回答

bobby

2021-07-05

这个问题很好,也很典型,可以给其他同学参考:

  1. 和指针绑定的方法 你可以使用非指针的方法调用,反过来不行。 所以为了图省事你可以全部定义为指针绑定。

  2. 但是指针绑定的方法给了函数内部修改该实例的能力,所以如果你不希望这个方法会影响到原实例的话,为了安全可以选用非指针绑定

  3. 和第2点相反,如果你希望你的方法能影响到原实例,那只有绑定指针

  4. 非指针绑定方法的原理实际上就和我么普通函数调用值传递一样的原理,所以如果你的实例如果占用内存比较大,这个时候为了省内存可以选用指针绑定方法

所以结论就是:如果你希望你的方法不会影响到原实例,也就要求安全的时候选用实例绑定,其他时候直接选择指针绑定吧,毕竟这样省事还省内存

1

0 学习 · 1399 问题

查看课程