Types 我怎样才能得到类型
我想从类型名称中获取(反映)类型。Types 我怎样才能得到类型,types,go,Types,Go,我想从类型名称中获取(反映)类型。 如何重写getType函数。无法将类型作为参数传递给Go中的函数,因此您所要求的是不可能的。如果您想使用reflect模块处理类型,则需要有一个值作为起点。正如@James Henstridge所说,您不能将类型传递给go中的函数。但是,如果您有一个复合类型,那么您可以非常轻松地创建它的nil版本,并传递它。() 也就是说,我不明白您为什么要这样做,因为当您将它传递到getType()函数中时,您知道它的类型,所以您知道它的名称,所以为什么不直接使用它呢?在
如何重写getType函数。无法将类型作为参数传递给Go中的函数,因此您所要求的是不可能的。如果您想使用
reflect
模块处理类型,则需要有一个值作为起点。正如@James Henstridge所说,您不能将类型传递给go中的函数。但是,如果您有一个复合类型,那么您可以非常轻松地创建它的nil
版本,并传递它。()
也就是说,我不明白您为什么要这样做,因为当您将它传递到
getType()
函数中时,您知道它的类型,所以您知道它的名称,所以为什么不直接使用它呢?在这个示例中很清楚。但是,real不清楚。例如,一个函数有一些参数不清楚。您可以按名称获取方法。我想知道是否有理由不允许按名称查找类型,或者这是一种疏忽。
package main
import (
"fmt"
"reflect"
)
type Name string
func main() {
fmt.Println("Hello, playground")
var name Name = "Taro"
fmt.Println(name)
fmt.Println(getType(name))
// fmt.Println(getType(Name)) // want to same as getType(name)
}
func getType(v interface{}) reflect.Type {
return reflect.TypeOf(v)
}
type Name struct{ name string }
func main() {
var name = Name{"Taro"}
fmt.Println(name)
fmt.Println(getType(name))
fmt.Println(getType(Name{})) // want to same as getType(name)
}
func getType(v interface{}) reflect.Type {
return reflect.TypeOf(v)
}