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