golang之判断元素是否在数组内问题
作者:我的猫叫土豆 发布时间:2024-03-15 02:24:49
标签:golang,判断元素,数组
golang判断元素是否在数组内
众所周知,golang里没有像python的in来判断元素是否在list里存在,可替代的办法是将list放到map里,在map里判断元素是否存在
// 已知list中元素"amber","jack"
arr := [...]string{"amber","jack"}
// 初始化map
var set map[string]struct{}
set = make(map[string]struct{})
// 上面2部可替换为set := make(map[string]struct{})
// 将list内容传递进map,只根据key判断,所以不需要关心value的值,用struct{}{}表示
for _, value := range arr{
set[value] = struct{}{}
}
// 检查元素是否在map
if _, ok := set["amber"];ok {
fmt.Println("amber is in the list")
} else {
fmt.Println("amber is not in the list")
}
golang判断一个目标元素是否在目标数组中
目标数组只能包含整形、字符串、布尔类型等基本类型
目标元素只能包含整形、字符串、布尔类型等基本类型
非interface数组需要先转换为对于的interface数组
其余基本类型的转换按思想实现即可
import "reflect"
func FolatArray2Interface(array []float32) []interface{} {
var goalArray []interface{}
for _, value := range array {
goalArray = append(goalArray, value)
}
return goalArray
}
func IntArray2Interface(array []int) []interface{} {
var goalArray []interface{}
for _, value := range array {
goalArray = append(goalArray, value)
}
return goalArray
}
func StringArray2Interface(array []string) []interface{} {
var goalArray []interface{}
for _, value := range array {
goalArray = append(goalArray, value)
}
return goalArray
}
func InArray(array []interface{}, element interface{}) bool {
// 实现查找整形、string类型和bool类型是否在数组中
if element == nil || array == nil {
return false
}
for _, value := range array {
// 首先判断类型是否一致
if reflect.TypeOf(value).Kind() == reflect.TypeOf(element).Kind() {
// 比较值是否一致
if value == element {
return true
}
}
}
return false
}
来源:https://blog.csdn.net/ambzheng/article/details/107295240


猜你喜欢
- 突发奇想,写了以下这段代码,感觉还不错,拿来和大家分享作用:查看页面布局使用方法:在页面底部包含以下这段代码ff3,ie7测试可用var&n
- 我先给一个初步的表格吧,大家如果有什么意见,或有补充,欢迎提出。有些我没有用过,先不写了。 以下是我使用过的python IDE: 除了Py
- 特征降维0维 标量1维 向量2维 矩阵概念降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关&
- 本文实例为大家分享了python爬取微信公众号文章的具体代码,供大家参考,具体内容如下# -*- coding: utf-8 -*-impo
- antd form表单使用setFildesValue 赋值失效加上this.$nextTick(()=>{})即可this.$nex
- MySQLMySQL的特点1、性能卓越,服务稳定,很少出现异常宕机;2、开放源代码无版本制约,自主性及使用成本低;3、历史悠久,社区和用户非
- 前言本篇来学习pytest中内置fixture中临时目录的使用tmpdirtmpdir作用范围是函数级别,创建临时文件供单个测试点调用# -
- Python For 循环for 循环用于迭代序列(即列表,元组,字典,集合或字符串)。这与其他编程语言中的 for 关键字不太相似,而是更
- 一般我是用<%@ include %>方式来包含这个文件,主要是这样能够被包含页面会跟包含页面在编译时被编译成一个文件,里面的变
- 1、 变量及其作用域:变量分为“全局变量”和“局部变量”,“全局变量”申明在函数外部,可供所有函数使用,而“局部变量”申明在函数体内部,只能
- 前言这里存储过程和游标的定义和作用就不介绍了,网上挺多的,只通过简单的介绍,然后用个案例让大家快速了解。实例中会具体说明变量的定义,赋值,游
- 测试题defer有一些规则,如果不了解,代码实现的最终结果会与预期不一致。对于这些规则,你了解吗?这是关于defer使用的代码,可以先考虑一
- 报错信息:Job for mysqld.service failed because the control process exited
- startswith()方法Python startswith() 方法用于检查字符串是否是以指定子字符串开头如果是则返回 True,否则返
- 如何验证日期输入是否正确?我们可以利用ASP 3.0里的On Error Resume Next来完成这项功能:<%Option&nb
- 今天遇到一个问题,使用python的find函数寻找字符串中的第一个空格时没有找到正确的位置,例如:http://zc.whmc.edu.c
- 这几天要折腾mysql服务器,所以在网上搜罗了一些维护策略,然后自己总结实验,下面是我的总结经验和别人的一些建议。日志类型:MySQL有几个
- 编辑距离编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。编
- 安装部署Scrapy在安装Scrapy前首先需要确定的是已经安装好了Python(目前Scrapy支持Python2.5,Python2.6
- 安装完MySQL以后会自动创建一个root用户和一个匿名用户,对于root大家都非常注意,而这个匿名用户很多人都会忽略,大概是因为匿名用户默