chromedp 存在某元素_go:查看某元素是否在 slice 中

0027c221eb710a11f12b1d655803c8f2.png

go 中没有提供类似于python中in的功能。想要查看某元素是否在 slice 中,需要自己实现其功能。

1. 遍历

这是最先想到的方法。从slice 中取出每个成员,与被检测的元素进行比较。

func main() {
    var fruits = []string{"apple", "banana", "orange", "pear"}
    n := "pear"
​
    for _, v := range fruits {
        if n == v {
            fmt.Println("in")
        }
    }
}

2. 借助 map

将 slice 中的成员当做 map 中的 key,利用 v, ok := map[key] 判断slice 中是否包含相关元素。

func main() {
    var fruits = []string{"apple", "banana", "orange"}
    n := "pear"
    
    fm := make(map[string]int)
    for i, v := range(fruits) {
        fm[v] = i
    }
​
    if _, ok := fm[n]; ok {
        fmt.Println("in")
    } else {
        fmt.Println("not in")
    }
}

3. 借助 sort

import "sort"
​
func main() {
    var fruits = []string{"orange", "apple", "banana","pear"}
    n := "pear"
​
    //对 slice 进行升序排序
    ss := sort.StringSlice(fruits)
    ss.Sort()
    fruitsSorted := []string(ss)
​
    //查找字符串
    pos := sort.SearchStrings(fruitsSorted, n)
    if pos != len(fruitsSorted) {
        if n == fruitsSorted[pos] {
            fmt.Println("in")
        } else {
            fmt.Println("not in")
        }
    } else {
        fmt.Println("not in")
    }
}

sort.SearchStrings():查找 string

sort.SearchInts():查找 int

sort.SearchFloat64s():查找 float64

使用 sort 包的注意事项:

  1. 查找之前需要对 slice 进行排序,而且必须是升序
  2. 查找时,如果 slice 中存在元素,那么就返回元素在排序后的 slice中的索引;如果不存在,那么就返回 slice 的长度(len(slice))。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值