Returns true
if all elements in the collection have the same value, false
otherwise.
Use reflect.ValueOf()
to get the array or slice, Value.Index()
and Value.Interface()
to get the first value.
Use a for
loop with Value.Len()
and Value.Index()
to iterate over each element and compare it to the search value.
Return false
if a non-matching value is found, true
otherwise.
代码实现
import "reflect"
func AllSame(params ...interface{}) bool {
arr := reflect.ValueOf(params[0])
v := arr.Index(0).Interface()
for i := 0; i < arr.Len(); i++ {
if arr.Index(i).Interface() != v {
return false
}
}
return true
}
使用样例
AllSame([]int{1, 2, 3, 4, 5, 6}) // false
AllSame([]int{1, 1, 1, 1}) // true