Returns the first index at which a given element can be found in the collection, or -1
if it is not present.
Use reflect.ValueOf()
to get the array or slice and the value to search for.
Use a for
loop with Value.Len()
and Value.Index()
to iterate over each element and compare it to the search value.
Return the index if a matching value is found, -1
otherwise.
代码实现
import "reflect"
func IndexOf(params ...interface{}) int {
arr, v := reflect.ValueOf(params[0]),
reflect.ValueOf(params[1]).Interface()
for i := 0; i < arr.Len(); i++ {
if arr.Index(i).Interface() == v {
return i
}
}
return -1
}
使用样例
IndexOf([]int{1, 2, 3}, 2) // 1
IndexOf([]int{1, 2, 3}, 4) // -1