我如何编写一个函数来处理不同类型

鉴于以下示例,是否有可能创建一个可以逐字复制(不仅是获取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) ...

    // ...

}


慕虎7371278
浏览 159回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go