0
下面的代碼是Python腳本的適配。當然,它不會編譯,這有幾個原因。鑄造接口可以在陣列類型上反射
我很努力的去理解它是如何修復它,所以它給出了正確的結果。
特別是:
我想,所以我天真地使用
[]interface
但隨後傳遞數組將不起作用代表任一類型(float64
)或這種類型的array
。我知道我可以深入複製一個接口數組與我的數組,但它是唯一的方法?反射檢查工作(有點)但我回來鑄造接口到
[]interface
,這是行不通的。更簡單的方法是通過
[]float
,但我也想使代碼通用(oops!;-)足以接受[][]floats
並遞歸下降與比較。
我完全偏離軌道嗎?
func assertArrayEquals(first []interface{}, second []interface{}) bool {
if len(first) != len(second) {
return false
}
for i := range first {
if reflect.ValueOf(first[i]).Kind() == reflect.Array {
assertArrayEquals([]interface{}(first[i]), []interface{}(second[i]))
} else if second[i] != first[i] {
return false
}
}
return true
}
func main() {
assertArrayEquals([]float64{[]float64{0, 1}, []float64{0, 1}}, []float64{[]float64{0, 1}, []float64{0, 1}})
}
謝謝。我完全錯過了這個功能。 – Laurent