如何确定对象是否为复合(类型)

例如, x interface{}给出。string如果它是复合类型(结构或指向结构的指针)或“简单”类型(如, int,float等),如何确定(可能使用反射) ?



智慧大石
浏览 83回答 1
1回答

HUWWW

您可以使用 package reflect,获取其 type 并检查其kind。如果是指针类型,则“导航”到指向的类型:func isStruct(i interface{}) bool {    t := reflect.TypeOf(i)    if t.Kind() == reflect.Ptr {        t = t.Elem()    }    return t.Kind() == reflect.Struct}测试它:fmt.Println(isStruct("text"))fmt.Println(isStruct(1))fmt.Println(isStruct(image.Point{}))fmt.Println(isStruct(&image.Point{}))输出(在Go Playground上尝试):falsefalsetruetrue
打开App,查看更多内容
随时随地看视频慕课网APP