最近在写一个自动生成api文档的功能,用到了reflect包来给结构体赋值,给空数组新增一个元素,这样只要定义一个input结构体和一个output的结构体,并填写一些相关tag信息,就能使用程序来生成输入和输出的相关文档。
介绍
reflect包是golang中很重要的一个包,实现了在运行时允许程序操纵任意类型对象的功能。可以看下文档简单了解一下。
在reflect中,最重要的是Value类,只有先获取到一个对象或者变量的Value对象后,我们才可以对这个对象或者变量进行更进一步的分析和处理。我们可以使用reflect.ValueOf()方法获取Value对象。
var i intvalue := reflect.ValueOf(i) // 使用ValueOf()获取到变量的Value对象type S struct {
a string}var s S
value2 := reflect.ValueOf(s) // 使用ValueOf()获取到结构体的Value对象获取到对象或者变量的Value对象后,我们就可以对他们进一步的操作了。
1.获取对象或者变量的类型(Value.Type()和Value.Kind())

