簡體   English   中英

如何在接口中迭代數組{}?

[英]How to iterate an array in an interface{}?

我有一張地圖

myMap := make(map[string]interface{})

此地圖元素之一是[] map [string] string的數組

myMap["element"] = []map[string]string

我如何迭代此數組?

您無法遍歷類型為interface{}的值,該類型是您通過對地圖中任何鍵進行查找而返回的類型(因為它的類型為map[string]interface{} )。

您應該使用類型斷言來獲取該類型的值,然后可以在其上進行范圍調整。

myElt := myMap["element"]
v, ok := myElt.([]map[string]string)
if !ok {
    // TODO: Handle the error
}

for i, item := range v {
    // TODO: do something with each map[string]string item in the slice
}

這是一個為這些地圖類型使用人為設計的工作場所示例


如果知道值是指定的切片類型,則可以在類型斷言中省略ok檢查。 如果您使用的是其他人的通用地圖實現(鍵的類型為interface{} ),並且您只用[]map[string]string類型的值填充它,則可能是這種情況。 但是,請謹慎行事:如果您從地圖上獲得的不是該類型的值,而您忽略了該檢查,則程序將出現恐慌。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM