有没有办法在Go中为结构创建方法钩子?
我想为我的Go结构创建save之前和save之后的方法钩子,如何实现这一点有没有办法在Go中为结构创建方法钩子?,go,Go,我想为我的Go结构创建save之前和save之后的方法钩子,如何实现这一点 type Person struct { FirstName string LastName string } func (p *Person) Save() { // call beforeSave() // Save person data // call afterSave() } func
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()钩子,并能够在必要时进一步重写。像这样的包大量使用回调钩子。但是,如果您正在编写自己的引擎(用于某些特定逻辑),那么使用接口将非常有帮助()
我只想在上面的那篇文章中补充一点,我认为这很好地回答了您的问题,即您可以进一步使用管道(返回绑定到的相关变量的方法)。在上面的文章中,它特别有趣,因为它涉及到能够在两个进程之间插入任何东西,您可以使用它来创建TEE和日志记录/日志系统,它可以在很大程度上补偿go中的原始错误处理
我设计了许多相关的字节片处理库,这些库可以轻松链接,而无需断开一行,尽管很明显,一行中超过3-4行可能会让人困惑,你可能会发现自己想要以DAG样式的模式传递内容,在这一点上,我认为频道是有意义的。一个描述性的示例将帮助其他人更好地理解您的问题。结构本身是否在其他地方使用?或者结构的接口是唯一重要的东西?您可以在上提供一个工作示例。我已经用一个示例更新了问题,说明了我正在尝试做什么。您已经在问题中编写了代码,注释掉了。问题是什么?问题是我需要某种方法来自动调用这些函数,而不必在每个结构中写入beforeSave()和afterSave()。