Fetch the repository succeeded.
package list
import (
"reflect"
)
type List struct {
inner interface{}
v reflect.Value
}
func NewList(slice interface{}) *List {
return &List{
inner: slice,
v: reflect.ValueOf(slice),
}
}
func (r *List) value() reflect.Value {
return r.v
}
func (r *List) ForEach(accept func(i int)) {
for i := 0; i < r.Len(); i++ {
accept(i)
}
}
func (r *List) ForEachWithStop(accept func(i int) bool) {
for i := 0; i < r.Len(); i++ {
if accept(i) {
break
}
}
}
func (r *List) FindBy(accept func(i int) bool) (j int, ok bool) {
r.ForEachWithStop(func(i int) bool {
j = i
ok = accept(i)
return ok
})
if !ok {
j = -1
}
return
}
func (r *List) Find(o interface{}) (int, bool) {
return r.FindBy(func(i int) bool {
return r.value().Index(i).Interface() == o
})
}
func (r *List) Contains(o interface{}) (ok bool) {
_, ok = r.Find(o)
return
}
func (r *List) Len() int {
return r.value().Len()
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。