鉴于以下示例,是否有可能创建一个可以逐字复制(不仅是获取reflect.Type)实际类型以进行进一步操作的函数?我知道 go 是静态类型的,虽然我可以将任何结构传递给定义接口参数的函数非常酷,但我是否有机会以相反的方式做更多的事情?
我已经查看了reflect包,但只找到了返回reflect.Type或reflect.Value的东西。我使用了返回新的reflect.Value 的New() 方法 - 在那里我无法设置任何字段。也许对反射包有经验的人可以告诉我这是否绝对可行 - 或者是否有另一种方法可以做到。
package main
import "fmt"
type User struct {
Name string
}
func main() {
user := User{Name:"FooBar"}
DoSomethingGenericWithStruct(user)
}
func DoSomethingGenericWithStruct(i interface{}) {
// access fields of i ...
// or create slice of type of i ([]User) ...
// or instantiate new object of type of i (new User) ...
// ...
}
相关分类