Documentation
¶
Index ¶
- func AddCallBlockToFunc(f *ast.File, funcName string, data []AstCallExpr, afterVar string) bool
- func AddFunc(f *ast.File, params *AstFunc) bool
- func AddFuncToInterface(f *ast.File, name string, params *AstFunc) bool
- func AddImport(fset *token.FileSet, f *ast.File, name, path string) bool
- func AddKVToFuncUnaryStruct(f *ast.File, funcName, varName, key, value string) bool
- func AddKVToStruct(f *ast.File, name, key, value string, addDocLine token.Pos) bool
- func AddKVToUnaryStruct(f *ast.File, varName, key, value string) bool
- func AddParamToFunc(f *ast.File, funcName, paramName, paramType string) bool
- func AddQuote(str string) string
- func AddSingleQuote(str string) string
- func AddValueToCaller(f *ast.File, varName, value string) bool
- func AddValueToMap(f *ast.File, mapName, key, value string) bool
- func AddValueToSlice(f *ast.File, varName, value string) bool
- func AddVarAfterVar(f *ast.File, name, value, afterVar string) bool
- func AddVarToFunc(f *ast.File, funcName, varName, value, afterVar, tag string) bool
- func DefineVarAfterVar(f *ast.File, name, kind, afterVar string) bool
- func GetLastVarFormFunc(f *ast.File, funcName string) string
- func InitEnv(path string) (fset *token.FileSet, f *ast.File)
- func PrintResult(fset *token.FileSet, f *ast.File)
- func WriteToFile(fset *token.FileSet, f *ast.File, path string) error
- type AstCallExpr
- type AstFunc
- type AstKv
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AddCallBlockToFunc ¶
AddCallBlockToFunc 添加一个如下所示的代码块到函数中
{ rdemo.POST("", demo.Create) rdemo.POST("/", demo.Create) }
func AddFunc ¶
AddFunc 新增一个函数,目前只支持如下格式:
参数:
&AstFunc{ Name: "test", Params: []AstKv{ {Key: "p1", Value: "string"}, {Key: "p2", Value: "*AstKv"}, }, Results: []AstKv{ {Key: "ret", Value: "string"}, // results 这里的可以省略 }, Return: []string{"ret"}, }
结果为: func test(p1 string, p2 *AstKv) (ret string) { return ret }
在上诉AstFunc中添加如下 &AstFunc{Recv:{Key:"s", Value:"*Stu"}} 的结果为:
func (s Stu) test1(p1 string, p2 *AstKv) (ret string) { return ret }
在上诉AstFunc中添加如下 &AstFunc{Recv:{Key:"s", Value:"*Stu"}} 的结果为:
func (s *Stu) test2(p1 string, p2 *AstKv) (ret string) { return ret }
func AddFuncToInterface ¶
AddFuncToInterface 为interface添加函数
测试数据:
type EmptyInf interface { }
传参:
params := &AstFunc{ Name: "test0", Params: []AstKv{ {Key: "p1", Value: "string"}, {Key: "p2", Value: "...*AstKv"}, }, Results: []AstKv{ {Key: "ret1", Value: "string"}, }, }
结果为:
type EmptyInf interface { test0(p1 string, p2 ...*AstKv) (ret1 string) }
func AddKVToFuncUnaryStruct ¶
AddKVToFuncUnaryStruct 为函数的struct指针变量添加key value数据。目前没有做变量重复判断
测试数据:
func tStruct() { var te = &Stu{} stu := &Stu{} fmt.Println(te,stu) }
执行:
AddKVToFuncUnaryStruct(f, "tStruct", "te", "key", "value")
AddKVToFuncUnaryStruct(f, "tStruct", "stu", "key", "value")
结果为:
func tStruct() { var te = &Stu{key: value} stu := &Stu{key: value} fmt.Println(te, stu) }
func AddKVToStruct ¶
AddKVToStruct 为 type xx struct 添加成员属性
参数key允许为空 例子: type EmptyStruct struct { } 执行: AddKVToStruct(f,"EmptyStruct", "age", "int") AddKVToStruct(f,"EmptyStruct", "", "TypeStruct") 结果为: type EmptyStruct struct { age int TypeStruct }
func AddKVToUnaryStruct ¶
AddKVToUnaryStruct 给结构体指针变量添加key,value
比如:var xx = &Struct1{ Name: "str", }
给上面添加一组key "value",结果为:
var xx = &Struct1{ Name: "str", Key: "value" }
当然,对应Struct的应该是:
type Struct1 struct { Name string Key string }
func AddParamToFunc ¶
AddParamToFunc 给函数添加参数
测试数据:func t () {}
执行:AddParamToFunc(f, "t", "demo", "demo.IDemo")
结果为:func t(demo demo.IDemo,) {}
func AddValueToCaller ¶
AddValueToCaller 给CallerAble变量添加数据,没有做类型校验
测试数据: func NewSet(...interface{}) struct { return struct{} } var tt = NewSet(12,"cc") 执行: AddValueToCaller(f, "tt", AddQuote("hello")) AddValueToCaller(f, "tt", "hello") 结果为: var tt = NewSet(12, "cc", "hello", hello)
func AddValueToMap ¶
AddValueToMap 给map变量添加数据,没有做map类型校验
测试数据:var mapStr = map[string]string{"cc": "cc"} 执行:AddValueToMap(f, "mapStr", AddQuote("key"), AddQuote("test")) 结果为:var mapStr = map[string]string{"cc": "cc", "key": "test"} 测试数据:var mapInt = map[int]string{1: "cc"} 执行:AddValueToMap(f, "mapInt", "3", AddQuote("test")) 结果为:var mapInt = map[int]string{1: "cc", 3: "test"} 测试数据:var mapInf = map[string]interface{}{"cc": 1} 执行:AddValueToMap(f, "mapInf", AddQuote("hello"), "&aaa") 结果为:var mapInf = map[string]interface{}{"cc": 1, "hello": &aaa}
func AddValueToSlice ¶
AddValueToSlice 给slice变量添加数据,没有做类型校验
例子:var sliceStr = []string{} 执行: AddValueToSlice(f, "sliceStr", AddQuote("hello")) AddValueToSlice(f, "sliceStr", "hello") 结果为: var sliceStr = []string{"hello", hello}
func AddVarAfterVar ¶
AddVarAfterVar 在某个变量后面新增一个变量
在test变量后面新增一个:var genExpr = &ast.GenExpr 使用例子:AddVarAfterVar(f, "genExpr", "&ast.GenExpr", "test")
func AddVarToFunc ¶
AddVarToFunc 添加变量到函数中
支持格式有: var xx string
var xx = "xxx"
xx := ccc 有问题,暂不修复
不支持复杂的定义
func DefineVarAfterVar ¶
DefineVarAfterVar 在某个变量后面新定义一个变量
在test变量后面定义一个:var genExpr *ast.GenExpr 使用例子:DefineVarAfterVar(f, "genExpr", "*ast.GenExpr", "test")
func GetLastVarFormFunc ¶
GetLastVarFormFunc 获取函数中最后一个变量名称