Skip to content

xyz327/sandwich

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sandwich

通过定义接口生成代码实现功能扩展(装饰器模式)

Example 文件说明

说明

假设需求

现有一个 Origin 对象(参考example/origin.go),需要对 Origin 对象的方法进行扩展

  1. 对 key 参数增加前缀
  2. 统计耗时

实现

  1. 定义包装代码(example/wrapper.go)
  2. 执行 go:generate 生成代码(example/wrapper_gen.go)
  3. 执行测试用例(example/wrapper_test.go) 最后执行测试代码后会输出
DoSomething1
start:2024-06-25 12:38:19.014668 +0800 CST m=+0.000469745
WrapperMethod                     # 包装方法输出  
DoSomething1, key->  prefix:key   # 改变后的入参,原来的方法输出
cost:0s                           # 包装方法输出,统计执行耗时  

DoSomething2
start:2024-06-25 12:38:19.014674 +0800 CST m=+0.000476388
WrapperMethod
DoSomething2, keys->  [prefix:key1 prefix:key2] 
cost:0s

About

A Go Struct Decorator base on code generater

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published