golang 通用Contains方法

2024-05-14 02:38
文章标签 golang 通用 方法 contains

本文主要是介绍golang 通用Contains方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

golang 通用Contains方法

 

今天在群里看见有人写了一个InAarry方法,主要作用是判断一个元素是否在slice中,看完后,我感觉方法应该还有扩展的空间

于是自己重新写了一个Contains方法,可以支持 slice,array,map等类型


package mainimport ("errors""fmt""reflect"
)// 判断obj是否在target中,target支持的类型arrary,slice,map
func Contain(obj interface{}, target interface{}) (bool, error) {targetValue := reflect.ValueOf(target)switch reflect.TypeOf(target).Kind() {case reflect.Slice, reflect.Array:for i := 0; i < targetValue.Len(); i++ {if targetValue.Index(i).Interface() == obj {return true, nil}}case reflect.Map:if targetValue.MapIndex(reflect.ValueOf(obj)).IsValid() {return true, nil}}return false, errors.New("not in array")
}func main() {testMap()testArray()testSlice()
}func testArray() {a := 1b := [3]int{1, 2, 3}fmt.Println(Contain(a, b))c := "a"d := [4]string{"b", "c", "d", "a"}fmt.Println(Contain(c, d))e := 1.1f := [4]float64{1.2, 1.3, 1.1, 1.4}fmt.Println(Contain(e, f))g := 1h := [4]interface{}{2, 4, 6, 1}fmt.Println(Contain(g, h))i := [4]int64{}fmt.Println(Contain(a, i))
}func testSlice() {a := 1b := []int{1, 2, 3}fmt.Println(Contain(a, b))c := "a"d := []string{"b", "c", "d", "a"}fmt.Println(Contain(c, d))e := 1.1f := []float64{1.2, 1.3, 1.1, 1.4}fmt.Println(Contain(e, f))g := 1h := []interface{}{2, 4, 6, 1}fmt.Println(Contain(g, h))i := []int64{}fmt.Println(Contain(a, i))
}func testMap() {var a = map[int]string{1: "1", 2: "2"}fmt.Println(Contain(3, a))var b = map[string]int{"1": 1, "2": 2}fmt.Println(Contain("1", b))var c = map[string][]int{"1": {1, 2}, "2": {2, 3}}fmt.Println(Contain("6", c))
}

 

这篇关于golang 通用Contains方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/987526

相关文章

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图

SQL Server 查询数据库及数据文件大小的方法

《SQLServer查询数据库及数据文件大小的方法》文章介绍了查询数据库大小的SQL方法及存储过程实现,涵盖当前数据库、所有数据库的总大小及文件明细,本文结合实例代码给大家介绍的非常详细,感兴趣的... 目录1. 直接使用SQL1.1 查询当前数据库大小1.2 查询所有数据库的大小1.3 查询每个数据库的详

Java实现本地缓存的四种方法实现与对比

《Java实现本地缓存的四种方法实现与对比》本地缓存的优点就是速度非常快,没有网络消耗,本地缓存比如caffine,guavacache这些都是比较常用的,下面我们来看看这四种缓存的具体实现吧... 目录1、HashMap2、Guava Cache3、Caffeine4、Encache本地缓存比如 caff

Java 中编码与解码的具体实现方法

《Java中编码与解码的具体实现方法》在Java中,字符编码与解码是处理数据的重要组成部分,正确的编码和解码可以确保字符数据在存储、传输、读取时不会出现乱码,本文将详细介绍Java中字符编码与解码的... 目录Java 中编码与解码的实现详解1. 什么是字符编码与解码?1.1 字符编码(Encoding)1

Python Flask实现定时任务的不同方法详解

《PythonFlask实现定时任务的不同方法详解》在Flask中实现定时任务,最常用的方法是使用APScheduler库,本文将提供一个完整的解决方案,有需要的小伙伴可以跟随小编一起学习一下... 目录完js整实现方案代码解释1. 依赖安装2. 核心组件3. 任务类型4. 任务管理5. 持久化存储生产环境

Python批量替换多个Word文档的多个关键字的方法

《Python批量替换多个Word文档的多个关键字的方法》有时,我们手头上有多个Excel或者Word文件,但是领导突然要求对某几个术语进行批量的修改,你是不是有要崩溃的感觉,所以本文给大家介绍了Py... 目录工具准备先梳理一下思路神奇代码来啦!代码详解激动人心的测试结语嘿,各位小伙伴们,大家好!有没有想

Python如何调用另一个类的方法和属性

《Python如何调用另一个类的方法和属性》在Python面向对象编程中,类与类之间的交互是非常常见的场景,本文将详细介绍在Python中一个类如何调用另一个类的方法和属性,大家可以根据需要进行选择... 目录一、前言二、基本调用方式通过实例化调用通过类继承调用三、高级调用方式通过组合方式调用通过类方法/静

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

Java报错:org.springframework.beans.factory.BeanCreationException的五种解决方法

《Java报错:org.springframework.beans.factory.BeanCreationException的五种解决方法》本文解析Spring框架中BeanCreationExce... 目录引言一、问题描述1.1 报错示例假设我们有一个简单的Java类,代表一个用户信息的实体类:然后,

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详