Skip to content

fumeboy/typoverride

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

通过修改类型信息来注入 struct tag json

具体逻辑详见 ./override.go

程序效果请见 ./override_test.go 测试程序的输出

目的

你不用花费时间在重复书写 struct tag 上,比如

// BAD
type T struct {
    InputType           string   `json:"inputType"`
    ValueType           string   `json:"valueType"`
    ValueUnit           string   `json:"valueUnit"`
    SelectList          []string `json:"selectList"`
    SelectListInterface string   `json:"selectListInterface"`
}

现在只需要

// GOOD

type T struct {
	InputType           string
	ValueType           string
	ValueUnit           string
	SelectList          []string
	SelectListInterface string
}
var _ = typoverride.Do(T{})

存在的问题

原先类型信息是存放在 0x112 开头的地址下的(貌似是代码段

覆写类型信息后,新的 name 值的地址在 0xc 开头的地址下

类型信息分开存放后,可能会因为 gc 产生问题 或者 影响内存读取次数

我个人不太清楚这样做的后果。不建议生产环境使用

About

修改 go 类型信息

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages