我想在保存之前创建,之后我的Go结构的保存方法挂钩如何实现?
type Person struct {
FirstName string
LastName string
}
func (p *Person) Save() {
// call beforeSave()
// Save person data
// call afterSave()
}
func (p *Person) Update() {
// call beforeUpdate()
// Update person data
// call afterUpdate()
}
type Order struct {
Number bson.ObjectId
Items []Item
}
func (o *Order) Save() {
// call beforeSave()
// Save order data
// call afterSave()
}
func (o *Order) Update() {
// call beforeUpdate()
// Update order data
// call afterUpdate()
}
对于我作为模型创建的任何结构,我希望它有一个自动调用的beforeSave()和afterSave()挂钩,并且能够在必要时进一步覆盖。
答案 0 :(得分:0)
答案 1 :(得分:0)
https://medium.com/@matryer/the-http-handler-wrapper-technique-in-golang-updated-bc7fbcffa702
我只会在上面的文章中添加内容,我认为这很好地回答了您的问题,您可以使用管道(返回与它们绑定的关联变量的方法)做进一步的工作。如上一篇文章所述,它特别有趣,它涉及到可以在两个进程之间插入任何内容,您可以使用它来创建tee和日志记录/日志记录系统,并且它可以大大补偿原始的错误处理在Go中。
我设计了许多相关的字节片处理库,这些库可以很容易地链接而无需中断一行,尽管显然一行中超过3-4个会引起混淆,并且您会发现自己想要传递东西在DAG样式模式中,在这一点上,我认为渠道会很有意义。