例如, x interface{}給出。string如果它是復合類型(結構或指向結構的指針)或“簡單”類型(如, int,float等),如何確定(可能使用反射) ?
1 回答

HUWWW
TA貢獻1874條經驗 獲得超12個贊
您可以使用 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上嘗試):
false
false
true
true
- 1 回答
- 0 關注
- 140 瀏覽
添加回答
舉報
0/150
提交
取消