英文:
cannot use temp (type interface {}) as type []string in argument to equalStringArray: need type assertion
问题
我正在尝试将一个字符串数组传递给一个方法。尽管通过了断言,但我得到了以下错误:
无法将temp(类型为interface {})作为equalStringArray方法的[]string类型参数使用:需要类型断言
代码:
if str, ok := temp.([]string); ok {
if !equalStringArray(temp, someotherStringArray) {
// 做一些操作
} else {
// 做其他操作
}
}
我还尝试使用reflect.TypeOf(temp)
来检查类型,结果也打印出了[]string
。
英文:
I'm trying to pass a string array to a method. Although it passes the assertion, I'm getting this error
cannot use temp (type interface {}) as type []string in argument to equalStringArray: need type assertion
Code:
if str, ok := temp.([]string); ok {
if !equalStringArray(temp, someotherStringArray) {
// do something
} else {
// do something else
}
}
I've also tried checking the type with reflect.TypeOf(temp)
and that's also printing []string
答案1
得分: 3
你需要使用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
}
}
}
英文:
You need to use str, not temp
see: 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
}
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论