我正在尝试实现一个函数,该函数接受任何类型的元素和相同类型的切片,并在第二个元素中搜索第一个元素,将其位置作为结果,否则为 -1。
我不是Go专家,所以我的第一个想法是将要搜索的元素作为interface{}传递,将切片作为[]interface{}传递,但它并没有真正起作用。
这是我尝试过的:
package main
import (
"fmt"
)
func IsElementInListWithPos(element interface{}, list []interface{}) int {
for i := range list {
if list[i] == element {
return i
}
}
return -1
}
func main() {
list1 := []int{1, 2, 3, 4, 5, 6}
list2 := []string{"a", "b", "c", "d"}
pos1 := IsElementInListWithPos(3, list1)
pos2 := IsElementInListWithPos("a", list2)
fmt.Println(pos1, pos2)
}
它给了我以下错误:
cannot use list (type []int) as type []interface {} in argument to IsElementInListWithPos
cannot use list2 (type []string) as type []interface {} in argument to IsElementInListWithPos
知道如何在不实际使用两个不同函数的情况下解决这个问题吗?提前致谢。
森栏
守候你守候我
相关分类