DPIGGo 动态代理库

联合创作 · 2023-09-29 12:11

DPIG 是一个实验性质的 Go 语言动态代理库,它不依赖代码生成技术,可以对接口的实例进行动态增强,使用方法也很简单。

var u UserStore = user.New()
// 此处进行增强
dpig.Component(&u)

var postCall = func(in, out []reflect.Value) {
    log.Println("Get User:", in[0].Interface(),out[0].Interface{})
}
// 修改方法运行行为
dpig.Change(dpig.MethodSelector{Object:"UserStore",Method:"GetUser"}, dpig.Extend{Post: []dpig.PostCall{postCall}})

u.GetUser(uid) // 此时会执行 postCall 函数

它支持对方法进行三种增强:前置、后置、环绕。

浏览 8
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报