我试图将字符串数组传递给方法。虽然它通过了断言,但我收到了这个错误
cannot use temp (type interface {}) as type []string in argument to equalStringArray: need type assertion
代码:
if str, ok := temp.([]string); ok {
if !equalStringArray(temp, someotherStringArray) {
// do something
} else {
// do something else
}
}
我还尝试使用reflect.TypeOf(temp)
检查类型,并且还打印[]string
答案 0 :(得分:2)
你需要使用str,而不是temp
请参阅:https://play.golang.org/p/t9Aur98KS6
package main
func equalStringArray(a, b []string) bool {
if len(a) != len(b) {
return false
}
for i := 0; i < len(a); i++ {
if a[i] != b[i] {
return false
}
}
return true
}
func main() {
someotherStringArray := []string{"A", "B"}
var temp interface{}
temp = []string{"A", "B"}
if strArray, ok := temp.([]string); ok {
if !equalStringArray(strArray, someotherStringArray) {
// do something 1
} else {
// do something else
}
}
}