首页 > 文章列表 > GORM 中字段指针和非指针类型:何时该用指针,何时该用非指针?

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

191 2025-02-12

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

gorm 中字段指针和非指针的区别

在 gorm 中定义模型时,字段类型可以是指针类型或非指针类型。指针类型是指向另一个值的引用,而非指针类型则存储实际的值。

指针类型

  • 场景:当字段的值可能为 null 或当需要跟踪值的变化时使用。
  • 示例:

    type user struct {
      name *string
    }

    在这个示例中,name 字段被声明为指针类型,表示它可以包含一个指向字符串值的引用或 nil 值。

非指针类型

  • 场景:当字段的值始终存在且不需要跟踪其变化时使用。
  • 示例:

    type User struct {
      Age uint8
    }

    在这个示例中,age 字段被声明为非指针类型,表示它始终存储一个 uint8 值,不会为 nil。

区别

特性指针类型非指针类型
引用或 nil实际值
内存开销稍高较低
性能影响访问非空值时稍慢访问值时更快

选择哪种类型

选择使用指针类型还是非指针类型取决于字段的特定需求。对于可能为 null 或需要跟踪其变化的字段,应使用指针类型。对于始终存在且不需要跟踪其变化的字段,应使用非指针类型。

来源:1730772340