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

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

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

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

非指针类型(值类型)

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

指针类型

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

用法场景

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

示例

考虑以下模型:

  1. 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指向同一行数据的不同实例:

  1. user1 := User{Email: "john@example.com"}user2 := user1fmt.Println(user2.Email) // 输出:"john@example.com"user1.Email = "new.email@example.com"fmt.Println(user2.Email) // 输出:"new.email@example.com" (受影响)

登录后复制

以上就是GORM 模型定义中,字段指针和非指针的区别是什么?的详细内容,更多请关注【创想鸟】其它相关文章!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
编程技术

GORM 中字段指针和非指针类型:何时该用指针,何时该用非指针?

2025-2-28 14:19:39

编程技术

如何利用缓存技术提升在线视频网站的并发播放量并实现毫秒级跳转?

2025-2-28 14:19:56

0 条回复 A文章作者 M管理员
欢迎您,新朋友,感谢参与互动!
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
私信列表
搜索