程序开发 · 2025年5月17日

GORM 模型定义中,字段指针和非指针的区别是什么?

大家好,今天本人给大家带来文章
《GORM 模型定义中,字段指针和非指针的区别是什么?》,文中内容主要涉及到
,如果你对
GOLANG方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!,
,
gorm模型定义中字段指针和非指针的区别,使用gorm定义模型时,字段类型可以是值类型(如string) 或指针类型(如*string)。,
非指针类型(值类型),非指针类型直接保存字段的值。当对字段进行赋值或修改时,实际上是修改了字段本身,不会影响其他地方对该字段的引用。,
指针类型,指针类型保存的是字段的内存地址。当对字段进行赋值或修改时,实际上是修改了指向的内存地址,从而影响了其他地方对该字段的引用。,
用法场景,
示例,考虑以下模型:,以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持GOLANG!更多关于GOLANG的相关知识,也可关注GOLANG公众号。,email 是指针类型,修改user.email实际上是修改了指向的内存地址,从而影响了其他地方对user.email的引用。例如,假设user1和user2指向同一行数据的不同实例:,name 是非指针类型,修改user.name不会影响其他地方对user.name的引用。,
指针类型:适用于需要与其他地方共享字段值的场景,例如外键、联合索引字段。,
非指针类型:适用于不需要与其他地方共享字段值的场景,例如主键、唯一索引字段。,gorm模型定义中字段指针和非指针的区别,大家好,今天本人给大家带来文章
《GORM 模型定义中,字段指针和非指针的区别是什么?》,文中内容主要涉及到
,如果你对
GOLANG方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!,

当前位置: > > > > GORM 模型定义中,字段指针和非指针的区别是什么?

GORM 模型定义中,字段指针和非指针的区别是什么?

2024-11-05 21:16:04
0浏览
收藏

大家好,今天本人给大家带来文章《GORM 模型定义中,字段指针和非指针的区别是什么?》,文中内容主要涉及到,如果你对GOLANG方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

gorm模型定义中字段指针和非指针的区别

使用gorm定义模型时,字段类型可以是值类型(如string) 或指针类型(如*string)。

非指针类型(值类型)

非指针类型直接保存字段的值。当对字段进行赋值或修改时,实际上是修改了字段本身,不会影响其他地方对该字段的引用。

指针类型

指针类型保存的是字段的内存地址。当对字段进行赋值或修改时,实际上是修改了指向的内存地址,从而影响了其他地方对该字段的引用。

用法场景

  • 非指针类型:适用于不需要与其他地方共享字段值的场景,例如主键、唯一索引字段。
  • 指针类型:适用于需要与其他地方共享字段值的场景,例如外键、联合索引字段。

示例

考虑以下模型:

type user struct {
  id           uint
  name         string
  email        *string
  age          uint8
  birthday     *time.time
  membernumber sql.nullstring
  activatedat  sql.nulltime
  createdat    time.time
  updatedat    time.time
}
  • name 是非指针类型,修改user.name不会影响其他地方对user.name的引用。
  • email 是指针类型,修改user.email实际上是修改了指向的内存地址,从而影响了其他地方对user.email的引用。例如,假设user1和user2指向同一行数据的不同实例:
user1 := User{Email: "[email protected]"}
user2 := user1
fmt.Println(user2.Email) // 输出:"[email protected]"
user1.Email = "[email protected]"
fmt.Println(user2.Email) // 输出:"[email protected]" (受影响)

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持GOLANG!更多关于GOLANG的相关知识,也可关注GOLANG公众号。

MySQL 更新时偶发性报错“invalid input syntax for integer”,该如何解决?
如何使用 Tailwind CSS 和 JavaScript 创建打字机效果文本动画