登录
首页 >  Golang >  Go问答

gorm中模型结构体指针后字符串的意思?

来源:SegmentFault

时间:2023-02-16 15:31:39 487浏览 收藏

本篇文章给大家分享《gorm中模型结构体指针后字符串的意思?》,覆盖了Golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

问题内容

看了下gorm基础,有以下疑问:
定义如下Model

type Model struct {
  ID        uint           `gorm:"primaryKey"`
  CreatedAt time.Time
  UpdatedAt time.Time
  DeletedAt gorm.DeletedAt `gorm:"index"`
}

请问 形如

gorm:"primaryKey"
结构体字段后面的 字符串(gorm称其为
字段标签
)是go的语法 (因为我在go结构体一章中未看到这个用法) 还是gorm的语法?

正确答案

你这问题问的……gorm 就是个库,它还能让你写出不是 golang 语法的东西来?

这东西在语法里叫 Struct Tag(翻译成标签倒也不错)。

我不知道你在哪看的所谓“结构体一章”,但这个东西官方手册在结构体里是有讲过的:

REF: https://go.dev/ref/spec#Struc...

A field declaration may be followed by an optional string literal tag, which becomes an attribute for all the fields in the corresponding field declaration. An empty tag string is equivalent to an absent tag. The tags are made visible through a reflection interface and take part in type identity for structs but are otherwise ignored.

struct {
   x, y float64 ""  // an empty tag string is like an absent tag
   name string  "any string is permitted as a tag"
   _    [4]byte "ceci n'est pas un champ de structure"
}

// A struct corresponding to a TimeStamp protocol buffer.
// The tag strings define the protocol buffer field numbers;
// they follow the convention outlined by the reflect package.
struct {
    microsec  uint64 `protobuf:"1"`
    serverIP6 uint64 `protobuf:"2"`

当然这里只是一嘴带过,简单讲了一下。重点篇幅都在反射相关的介绍里:

REF: https://pkg.go.dev/reflect#St...

理论要掌握,实操不能落!以上关于《gorm中模型结构体指针后字符串的意思?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>