問題:將 Interface{}轉換為映射並迭代它
嘗試創建一個可以接受各種資料結構的通用函數,包括結構體、結構體切片和帶有字串的映射鍵和結構值,您正在嘗試迭代映射時遇到錯誤。反思介面表明它確實是一個地圖,但透過範圍迭代存取其元素會導致錯誤。
A:使用型別開關或 Value.MapKeys
有兩種方法可以解決此問題:
類型開關:
對於例如:
switch in := in.(type) { case map[string]*Book: for key, value := range in { fmt.Printf("Key: %s, Value: %v\n", key, value) } default: // Handle other cases as needed. }
Value.MapKeys:
v := reflect.ValueOf(in) keys := v.MapKeys() for _, key := range keys { value := v.MapIndex(key) fmt.Printf("Key: %v, Value: %v\n", key.Interface(), value.Interface()) }
以上是如何迭代從介面反射的地圖{}?的詳細內容。更多資訊請關注PHP中文網其他相關文章!