golang中平常写orm的结构体时,可以通过工具快速生成数据表的映射结构体

生成的结构体或者自己写的结构体大概是这样子的

type Dianpu1 struct {
	Id         int    `orm:"id" json:"id"`  //自增主键
	UserName   string `orm:"user_name" json:"user_name"`  //用户名
	UserAge    int16  `orm:"user_age" json:"user_age"`  //用户年龄
	UserGender string `orm:"user_gender" json:"user_gender"`  //用户性别
}

问题是,当修改数据库的数据时,我们只想修改部分字段。如果我们对上面的结构体只赋值一部分时,通过orm库生成的数据中,没有赋值的字段就会默认为零值(例如:int类型为0,string类型为空),并且会写入数据库,导致其他字段的值出错。
可以在标签中添加 omitempty 标识,这样的话,没有手动赋值的字段就不会被使用

type Dianpu1 struct {
	Id         int    `orm:"id,omitempty" json:"id"`  //自增主键
	UserName   string `orm:"user_name,omitempty" json:"user_name"`  //用户名
	UserAge    int16  `orm:"user_age,omitempty" json:"user_age"`  //用户年龄
	UserGender string `orm:"user_gender,omitempty" json:"user_gender"`  //用户性别
}

如上面对orm标签添加omitempty标识,那么在orm操作数据库,没有手动赋值的字段不会有值。
但是如果对结构体进行序列化时,该标识就不起作用了,如果想起作用,也得和orm标识一样添加omitempty标识