我有一個檢查陣列長度是否相同的函式:
func checkArrayLengthsMatch(desiredLength int, arrays ...[]any) bool {
for _, array := range arrays {
if len(array) != desiredLength {
return false
}
}
return true
}
但這不起作用,因為[]any.
array1 := []string{"1", "2"}
array2 := []int{1, 2}
checkArrayLengthsMatch(2, array1, array2)
給出錯誤cannot use array1 (variable of type []string) as type []any in argument to checkArrayLengthsMatch
有沒有什么方法可以實作這個功能而不必寫一個很長的 if 陳述句?(例如if len(array1) != 2 || len(array2) != 2)泛型?
我希望能夠支持檢查各種型別的陣列。
去游樂場鏈接:https ://go.dev/play/p/yKisBIOZktI
uj5u.com熱心網友回復:
如果您需要將不同型別的陣列傳遞給同一個函式,泛型將不起作用,但反射會:
func checkArrayLengthsMatch(desiredLength int, arrays ...any) bool {
for _, array := range arrays {
if reflect.ValueOf(array).Len() != desiredLength {
return false
}
}
return true
}
這也適用于地圖、通道和字串。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/518667.html
標籤:去
