Skip to content

Commit

Permalink
update doc
Browse files Browse the repository at this point in the history
  • Loading branch information
dengsgo committed Aug 31, 2023
1 parent 9661534 commit 3274ea5
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions README.zh_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,22 @@
> 请勿应用于生产环境!!!
> 项目仍在迭代开发,仅公开测试阶段
`go-decorator`, **使用注释注入装饰器的 go 语言中间件工具**.
`go-decorator` 是一款专门用于 Go 语言编译器的中间件工具,能够通过注释方式实现非侵入式的装饰器使用。


## Feature

- 使用 `//go:decor decoratorfunctionName` 注释函数即可使用装饰器 `decoratorfunctionName`,快速完成样板代码注入、非侵入式改变函数行为、控制逻辑流程等;
- 实现 func(*decor.Context) 类型的函数,即为一个装饰器,可以用在任意的一级函数上(top-level function);
- 允许使用多个(行)`//go:decor`装饰器来装饰函数
- 友好的错误提示,可以较为正确的在编译时发现问题并给出错误原因和错误行号(比如装饰器未定义/包未引用等);
- 只在编译时增强目标函数,不会降低编译后程序的性能,更没有反射;
- 基础使用的引导文档;
- 使用 `//go:decor decoratorfunctionName` 注释函数即可使用装饰器 `decoratorfunctionName`,快速完成样板代码注入、非侵入式改变函数行为、控制逻辑流程等;
- 定义 `func(*decor.Context)` 类型的函数,即可作为装饰器,应用于任意一级函数(top-level function);
- 支持使用多个(行)`//go:decor`装饰器来装饰函数;
- 提供友好的错误提示,可在编译时发现问题并给出错误原因和错误行号(例如未定义的装饰器或未引用的包等);
- 仅在编译时增强目标函数,不会降低编译后程序的性能,也没有反射操作;
- 提供基础使用指南。

装饰器的使用场景,可以类比其他语言,比如 Python、TypeScript。(非常适合在缓存、鉴权、日志等场景使用,作为辅助手段解放重复编码的困扰)。

装饰器的使用场景,可以类比其他语言,比如 Python、TypeScript
`go-decorator` 是一种编译时装饰器注入技术。使用它不会影响您项目的源文件,并且不会在项目中生成额外的 `.go` 文件或其他冗余文件。这种注入方法与 `go:generate` 生成方式截然不同

`go-decorator` 是在编译时进行的装饰器注入,因此它不会破坏你项目的源文件,也不会额外在项目中生成新的`.go`文件和其他多余文件。 和 `go:generate` 生成式完全不同。

## Guide

Expand Down

0 comments on commit 3274ea5

Please sign in to comment.