分享
golang中struct关于反射tag
paladinosment · · 9533 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
package main
import (
"fmt"
"reflect"
)
type User struct {
name string `json:name-field`
age int
}
func main() {
user := &User{"John Doe The Fourth", 20}
field, ok := reflect.TypeOf(user).Elem().FieldByName("name")
if !ok {
panic("Field not found")
}
fmt.Println(getStructTag(field))
}
func getStructTag(f reflect.StructField) string {
return string(f.Tag)
}
output:
json:name-field
由反射可直接得到结构域,调用结构域中的Tag即可获取到tag进行处理。在golang中,例如著名的xorm包都没有加入mongodb的支持。利用golang的struct很好的支持JSON还是比较困难的,大部分都得依赖tag。在底层使用反射获得tag内容还是非常有必要的。
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信9533 次点击
下一篇:Golang之interface
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
package main
import (
"fmt"
"reflect"
)
type User struct {
name string `json:name-field`
age int
}
func main() {
user := &User{"John Doe The Fourth", 20}
field, ok := reflect.TypeOf(user).Elem().FieldByName("name")
if !ok {
panic("Field not found")
}
fmt.Println(getStructTag(field))
}
func getStructTag(f reflect.StructField) string {
return string(f.Tag)
}
output:
json:name-field
由反射可直接得到结构域,调用结构域中的Tag即可获取到tag进行处理。在golang中,例如著名的xorm包都没有加入mongodb的支持。利用golang的struct很好的支持JSON还是比较困难的,大部分都得依赖tag。在底层使用反射获得tag内容还是非常有必要的。