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)
}