英文:
How to get a new variable of the same type of another variable with Golang
问题
你好!以下是翻译好的内容:
我该如何做到这一点?我想要一个函数,返回一个与其参数类型相同的变量。我需要类似下面的代码:
type Whatever struct {
Title string
}
hey := Whatever{Title: "YAY"}
thetype := reflect.ValueOf(hey).Kind()
// 这样是不起作用的
BB := new(thetype)
希望对你有帮助!如果还有其他问题,请随时提问。
英文:
How can I do this? I want a function to return a variable with the same type as one of its arguments. I need something like the below:
type Whatever struct {
Title string
}
hey:= Whatever{Title:"YAY"}
thetype := reflect.ValueOf(hey).Kind()
// This does not work
BB:= new(thetype)
答案1
得分: 4
如果你想从reflect.Type
创建一个新的值,可以使用reflect.New
函数:
thetype := reflect.TypeOf(hey)
BB := reflect.New(thetype)
这将返回一个reflect.Value
类型的值。你可以使用.Interface()
方法和类型断言来恢复到原始类型。
在Go Playground上有一个示例:https://play.golang.org/p/rL-Hm0IUpd
英文:
If you want to create a new value from a reflect.Type
you can do it with reflect.New
:
thetype := reflect.TypeOf(hey)
BB:= reflect.New(thetype)
This returns a reflect.Value
You can then for example use .Interface()
and type assertions to get back to the original type.
Example on Go playground: https://play.golang.org/p/rL-Hm0IUpd
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论