From b934782a3863f2687e720e007981a58b70087077 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 27 Mar 2024 08:41:33 +0800 Subject: [PATCH] 1 --- metatable.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/metatable.go b/metatable.go index 9ead377..e64b4d9 100644 --- a/metatable.go +++ b/metatable.go @@ -102,6 +102,19 @@ func (this *IdMetaTable[T]) GetById(id int64) *T { } } +func (this *IdMetaTable[T]) RandElementExclude(cb func(*T) bool) *T { + if len(this.rawList) > 0 { + tryCount := 1 + for tryCount < 1000 { + meta := this.rawList[rand.Intn(len(this.rawList))] + if cb(meta) { + return meta + } + } + } + return nil +} + func (this *RawMetaTable[T]) Load() { if this.NoLoad { return