我的编程空间,编程开发者的网络收藏夹
学习永远不晚

golang 通用Contains方法分享

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

golang 通用Contains方法分享

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

于是自己重新写了一个Contains方法

可以支持 slice,array,map等类型


package main 
import (
    "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 := 1
    b := [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.1
    f := [4]float64{1.2, 1.3, 1.1, 1.4}
    fmt.Println(Contain(e, f))
 
    g := 1
    h := [4]interface{}{2, 4, 6, 1}
    fmt.Println(Contain(g, h))
 
    i := [4]int64{}
    fmt.Println(Contain(a, i))
}
 
func testSlice() {
    a := 1
    b := []int{1, 2, 3}
 
    fmt.Println(Contain(a, b))
 
    c := "a"
    d := []string{"b", "c", "d", "a"}
    fmt.Println(Contain(c, d))
 
    e := 1.1
    f := []float64{1.2, 1.3, 1.1, 1.4}
    fmt.Println(Contain(e, f))
 
    g := 1
    h := []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中的strings.ContainsAny

golang中的字符串操作strings.ContainsAny


package main 
import (
        "fmt"
        "strings"
)
 
//golang字符串操作
func main(){
        s := "hello world hello world"
        str := "wo"
 
        //判断字符串s中是否包含个子串str中的任何一个字符。包含则返回true,
        //如果str为空则返回false
        index := strings.ContainsAny(s,str)
        fmt.Println(index) //true
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。如有错误或未考虑完全的地方,望不吝赐教。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

golang 通用Contains方法分享

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Golang函数方法优化技巧分享

Golang函数方法优化技巧分享Golang作为一种快速、高效的编程语言,拥有许多强大的特性和优化方法,能够帮助开发者编写性能高效的程序。在Golang中,函数是非常重要的一部分,优化函数的性能可以显著提升整个程序的运行效率。本文将分享一
Golang函数方法优化技巧分享
2024-03-12

分享Golang中的数组删除方法

Golang数组删除技巧分享在日常开发中,我们经常会遇到需要对数组进行删除操作的情况。对于 Golang 这样一门强类型的语言,删除数组元素可能并不像其他语言那样直接。本文将分享一些在 Golang 中对数组进行删除操作的技巧,并提供具体
分享Golang中的数组删除方法
2024-02-25

Golang中常用的语法糖分享

语法糖,也称糖语法,是由英国计算机科学家彼得·兰丁提出的,用于表示编程语言中的某种类型的语法,这些语法不会影响功能,但使用起来却很方便,本文就来看看Golang中常用的语法糖有哪些吧
2023-05-20

Golang高效打印注释的方法分享!

Golang高效打印注释的方法分享!在Go语言开发过程中,良好的代码注释是非常重要的,它不仅可以帮助他人理解我们的代码,还可以帮助我们自己在后期维护时快速回忆起代码的功能和逻辑。在本文中,我们将分享一些高效打印注释的方法,希望能对大家有所
Golang高效打印注释的方法分享!
2024-02-29

python contains方法怎么使用

Python中的`contains()`方法用于检查一个字符串是否包含另一个字符串,并返回一个布尔值。其使用方法如下:```pythonstring.contains(substring)```其中,`string`是要检查的字符串,`su
2023-09-12

Golang中反射的常见用法分享

本篇文章主要为大家详细介绍一些Go语言中常见的反射用法,涵盖了常见的数据类型的反射操作。文中的示例代码讲解详细,感兴趣的可以了解一下
2023-01-04

Golang字符转整型的高效方法分享

go 中将字符高效转换为整型的指南:使用 strconv.parseint() 函数,提供要转换的字符串和基数。使用 fmt.scanf() 函数,指定格式化字符串以读取指定格式的数据。实战案例:使用 strconv.parseint()
Golang字符转整型的高效方法分享
2024-04-03

POI的常用方法分享

这篇文章主要讲解了“POI的常用方法分享”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“POI的常用方法分享”吧!public static void main(String[] args)
2023-06-03

分享在Ubuntu系统中快速安装golang的方法

Ubuntu系统中快速安装golang方法分享在Ubuntu系统上安装golang是非常简单的。本文将向大家分享一种快速安装golang的方法,并提供具体的代码示例。步骤一:更新系统在安装golang之前,我们需要先更新系统。打开终端
分享在Ubuntu系统中快速安装golang的方法
2024-01-20

分享优化和经验- Golang队列的实现方法

Golang队列实现的优化技巧与经验分享在Golang中,队列是一种常用的数据结构,可以实现先进先出(FIFO)的数据管理。虽然Golang已经提供了队列的标准库实现(container/list),但是在某些情况下,我们可能需要根据实际
分享优化和经验- Golang队列的实现方法
2024-01-24

Vue2和Vue3中常用组件通信用法分享

这篇文章主要为大家整理了Vue3的8种和Vue2的12种组件通信的使用方法,文中的示例代码讲解详细,对我们学习Vue有一定的帮助,值得收藏
2023-05-15

aspjpeg组件使用方法284587分享

aspjpeg是一款非常强大的图片处理组件,纯英文版本,不过早已经有免费版和破解版,但是对其进行详细与深入介绍的文章却是不多,即使有也只牵涉到图片缩略和图片水印
2023-05-20

aspjpeg组件使用方法284475分享

aspjpeg是一款非常强大的图片处理组件,纯英文版本,不过早已经有免费版和破解版,但是对其进行详细与深入介绍的文章却是不多,即使有也只牵涉到图片缩略和图片水印
2023-05-20

aspjpeg组件使用方法284567分享

aspjpeg是一款非常强大的图片处理组件,纯英文版本,不过早已经有免费版和破解版,但是对其进行详细与深入介绍的文章却是不多,即使有也只牵涉到图片缩略和图片水印
2023-05-20

oracle中contains的使用方法是什么

在Oracle中,CONTAINS是一个用于全文搜索的函数,用于检查一个文本列中是否包含指定的关键字或短语。CONTAINS函数通常用于全文搜索索引的查询中。CONTAINS函数的基本语法如下:CONTAINS(column_name,
oracle中contains的使用方法是什么
2024-04-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录