网络编程
位置:首页>> 网络编程>> Go语言>> golang之判断元素是否在数组内问题

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

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com