广告
返回顶部
首页 > 资讯 > 后端开发 > GO >golang 通用Contains方法分享
  • 619
分享到

golang 通用Contains方法分享

2024-04-02 19:04:59 619人浏览 薄情痞子
摘要

今天在群里看见有人写了一个InAarry方法,主要作用是判断一个元素是否在slice中,看完后,我感觉方法应该还有扩展的空间 于是自己重新写了一个Contains方法 可以支持 sl

今天在群里看见有人写了一个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
}

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

您可能感兴趣的文档:

--结束END--

本文标题: golang 通用Contains方法分享

本文链接: https://www.lsjlt.com/news/124975.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • golang 通用Contains方法分享
    今天在群里看见有人写了一个InAarry方法,主要作用是判断一个元素是否在slice中,看完后,我感觉方法应该还有扩展的空间 于是自己重新写了一个Contains方法 可以支持 sl...
    99+
    2022-11-12
  • Golang中常用的语法糖分享
    目录1、名字由来2、Golang常用语法糖2.1 简短变量声明 :=2.2 可变参函数 ...2.3 new函数1、名字由来 语法糖(Syntactic sugar)的概念是由英国计...
    99+
    2023-05-20
    Golang常用语法糖 Golang语法糖 Go 语法糖
  • Golang中反射的常见用法分享
    目录根据类型做不同处理标准库 json 中的示例基本类型的反射数组类型的反射chan 反射map 反射迭代反射 map 对象slice 反射string 反射interface/Po...
    99+
    2023-01-04
    Golang反射常见用法 Golang反射用法 Golang反射
  • python contains方法怎么使用
    Python中的`contains()`方法用于检查一个字符串是否包含另一个字符串,并返回一个布尔值。其使用方法如下:```pyth...
    99+
    2023-09-12
    python
  • jquery的contains()方法怎么用
    这篇文章主要介绍了jquery的contains()方法怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇jquery的contains()方法怎么用文章都会有所收获,下面我...
    99+
    2022-10-19
  • 【总结分享】golang中常见的类型转换方法
    Golang是一种强类型的编程语言,因此在处理不同类型之间的数据时,需要进行类型转换。本文将介绍Golang中常见的类型转换方法。数字类型转换在Golang中,数字类型转换是最常见的类型转换。常见的数字类型包括int、float32和flo...
    99+
    2023-05-14
    类型转换 Golang go语言
  • Golang通脉之方法详情
    目录方法和接收者指针类型的接收者值类型的接收者方法和函数任意类型添加方法方法继承方法重写结构体和方法补充方法和接收者 Go语言中的方法(Method)是一种作用于特定类型变量的函数...
    99+
    2022-11-12
  • POI的常用方法分享
    这篇文章主要讲解了“POI的常用方法分享”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“POI的常用方法分享”吧!public static void main(String[] args) ...
    99+
    2023-06-03
  • Java集合中contains方法的效率对比分析
    最近让部门技术大佬帮忙代码review的时候,他给我指出了一个小的技术细节,就是对于集合的contains方法尽量选用Set而不是List,平时没怎么注意,仔细看了下源码,大佬就是大...
    99+
    2022-11-12
  • Java String之contains方法的使用详解
    目录JavaStringcontains方法小结一下String的contain()函数用法例如Java String contains方法 package api.api; p...
    99+
    2022-11-12
  • Vue2和Vue3中常用组件通信用法分享
    目录Vue3 组件通信方式Vue3 通信使用写法1. props2. $emit3. expose / ref4. attrs5. v-model6. provide / injec...
    99+
    2023-05-15
    Vue2组件通信 Vue3组件通信 Vue组件通信
  • aspjpeg组件使用方法284587分享
    1、什么是AspJpeg? AspJpeg是一款功能强大的基于Microsoft IIS环境的图片处理组件,网络上对其进行详细和深入介绍的中文文章并不多,即使有一般也只是牵涉到图片缩...
    99+
    2023-05-20
    aspjpeg组件使用方法
  • aspjpeg组件使用方法284475分享
    1、什么是AspJpeg? AspJpeg是一款功能强大的基于Microsoft IIS环境的图片处理组件,网络上对其进行详细和深入介绍的中文文章并不多,即使有一般也只是牵涉到图片缩...
    99+
    2023-05-20
    aspjpeg组件使用方法
  • aspjpeg组件使用方法284567分享
    1、什么是AspJpeg? AspJpeg是一款功能强大的基于Microsoft IIS环境的图片处理组件,网络上对其进行详细和深入介绍的中文文章并不多,即使有一般也只是牵涉到图片缩...
    99+
    2023-05-20
    aspjpeg组件使用方法
  • Linux系统分区的方法分享
    本篇内容主要讲解“Linux系统分区的方法分享”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux系统分区的方法分享”吧!Linux分区方法,不同的人有不同的方法,反正没有统一的方法。在分区...
    99+
    2023-06-13
  • 9个Golang中map常用示例分享
    目录1.基本使用2.声明的同时一起初始化3.判断key是否存在4.遍历map5.删除k-v对6.map是无序的,如何让其按照指定的顺序遍历map7.map作为元素存储到切片中8.切片...
    99+
    2023-02-16
    Golang map示例 Golang map
  • 常用的JavaScript方法和技巧分享
    这篇文章主要讲解了“常用的JavaScript方法和技巧分享”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“常用的JavaScript方法和技巧分享”吧!常用...
    99+
    2022-10-19
  • 分享SqlServer存储过程使用方法
    目录一、简介二、使用三、在存储过程中实现分页一、简介 简单记录一下存储过程的使用。存储过程是预编译SQL语句集合,也可以包含一些逻辑语句,而且当第一次调用存储过程时,被调用的存储过程...
    99+
    2022-11-13
  • JS数组方法reduce的妙用分享
    目录1. 基本用法2. 使用技巧(1)数组求和(2)扁平数组(3)数组分组(4)使用 reduce() 代替 filter().map()(5)统计数组元素出现次数(6)串行执行异步...
    99+
    2023-02-01
    JS 数组方法reduce JS reduce使用 JS reduce
  • Vue插件使用方法详情分享
    目录一.应用场景二.使用方法1.使用自定义插件2.使用第三方插件【elementUI】一.应用场景 为vue添加全局功能,比如添加全局的方法和属性、混入全局组件、添加全局资源(指令、...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作