如何获取结构/接口的名称?
package crud
type User struct {
ID uint
Name string
Email string
}
package main
import "./crud"
func get_struct(value interface{}){
// print "User"
}
func main(){
get_struct(&crud.User{})
}
答案 0 :(得分:1)
reflect
包提供了这个;您只需从变量中创建一个新的reflect.Value
并检查其类型:
func get_struct(value interface{}){
var name string
ref := reflect.ValueOf(value)
if ref.IsValid() {
name = ref.Type().Name()
} else {
name = "nil"
}
fmt.Println(name)
}
注意:如果传递指针,您可能无法获得所需的输出。您可以考虑使用Type.String()
而不是Type.Name()
。