35 lines · 637 B · Go
RawDownload
// Copyright 2023 The Gitea Authors. All rights reserved.// SPDX-License-Identifier: MIT package templates import (	"fmt"	"reflect") type SliceUtils struct{} func NewSliceUtils() *SliceUtils {	return &SliceUtils{}} func (su *SliceUtils) Contains(s, v any) bool {	if s == nil {		return false	}	sv := reflect.ValueOf(s)	if sv.Kind() != reflect.Slice && sv.Kind() != reflect.Array {		panic(fmt.Sprintf("invalid type, expected slice or array, but got: %T", s))	}	for i := 0; i < sv.Len(); i++ {		it := sv.Index(i)		if !it.CanInterface() {			continue		}		if it.Interface() == v {			return true		}	}	return false}