
gorm 中字段指针和非指针的区别
在 gorm 中定义模型时,字段类型可以是指针类型或非指针类型。指针类型是指向另一个值的引用,而非指针类型则存储实际的值。
指针类型
- 场景:当字段的值可能为 null 或当需要跟踪值的变化时使用。
-
示例:
type user struct { name *string }在这个示例中,name 字段被声明为指针类型,表示它可以包含一个指向字符串值的引用或 nil 值。
非指针类型
- 场景:当字段的值始终存在且不需要跟踪其变化时使用。
-
示例:
type User struct { Age uint8 }在这个示例中,age 字段被声明为非指针类型,表示它始终存储一个 uint8 值,不会为 nil。
区别
| 特性 | 指针类型 | 非指针类型 |
|---|---|---|
| 值 | 引用或 nil | 实际值 |
| 内存开销 | 稍高 | 较低 |
| 性能影响 | 访问非空值时稍慢 | 访问值时更快 |
选择哪种类型
选择使用指针类型还是非指针类型取决于字段的特定需求。对于可能为 null 或需要跟踪其变化的字段,应使用指针类型。对于始终存在且不需要跟踪其变化的字段,应使用非指针类型。










