Go omitempty关键字

omitempty的使用


将结构体转成json作为参数,请求某个服务。希望结构体某字段为空时,解析成的json没有该字段。 这就是omitempty关键字的作用,即忽略空值

GORM中使用事务

公司用的还是 v1.x版本,业务场景是先根据条件删除一条记录,同时写入一条新的。 要保证两者要么同时执行成功,要么都不执行。本地demo记录一下:

1
2
3
4
5
6
7
8
9
10
create table shuang.student
(
id int auto_increment
primary key,
name varchar(128) not null,
age int not null,
id_card varchar(128) not null,
last_update date not null
)
charset = utf8mb4;

WebHook及其在github中的使用

钩子Hooks和回调Callback,是指在执行一系列操作过程中,触发了某个条件,会去执行某项操作。

如在GORM中,想要在执行查询后,上报一下执行的时间,则可以

1
db.Callback().Query().After("gorm:query").Register("endRead", completeRead)

其中endRead为自定义的事件名称,completeRead为自定义的触发时要执行的方法

(在GROM中,Hooks仅针对当前场景有效,Callback则针对全局有效)

在日志库 github.com/sirupsen/logrus,redis go客户端[github.com/go-redis/redis/v8]等库中,也都支持钩子/回调