Golang 如何判断数组某个元素是否存在 (isset)

 更新时间:2021年04月29日 09:37:53   作者:潘广宇 Leo  
这篇文章主要介绍了Golang 如何判断数组某个元素是否存在 (isset),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

如,现在需要判断命令行是否传了参数,即 os.Args[1] 是否存在

如果使用下述的判断:

package main 
import (
 "fmt"
 "os"
)
 
func main() {
 if os.Args[1] != "" {
  fmt.Println("aaa")
 } else {
  fmt.Println("bbb")
 } 
}

会报错:index out of range

panic: runtime error: index out of range
 
goroutine 1 [running]:
main.main()
 /root/workspace/go/testn.go:9 +0x100
exit status 2

正确处理方法:

通过遍历的方式判断 key = 1 是否存在

package main 
import (
 "fmt"
 "os"
)
 
func main() {
 var target string                             // 用来获取最终需要的os.Args[1]
 for k, v := range(os.Args) {
  if k == 1 {                               // 假设需要获取os.Args[k], k = 1
   target = v
  }
 } 
 
 if target != "" {                             // 不为空则表示os.Arg[1]存在
  fmt.Printf("os.Arg[1] = %s", target)     
 }
}

补充:golang中的正则匹配&判断元素是否在slice里或者数组里

1、正则匹配

package main 
import (
 "fmt"
 "regexp"
) 

func main() { 
    //pattern := "\\d+"     //反斜杠要转义
 pattern := "[a-zA-Z]"   //匹配字母
 str := "a1.22.35.4"
 result, _ := regexp.MatchString(pattern, str)
 fmt.Println(result)   //true
}

2、判断元素是否在slice里或者数组里

package main 
import "fmt" 
import "github.com/wxnacy/wgo/arrays" 
//go get github.com/wxnacy/wgo/arrays   安装包 

func main() {
 str := "342"
 var numbers []string
 numbers = append(numbers, "3332", "342", "ssddd", "ssss", "%%%%") 
 index := arrays.ContainsString(numbers, str)
 if index == -1 {
  fmt.Printf("not exists") //-1说明不存在
 } else {
  fmt.Println(index) //存在则会返回元素的下标 
 }
}

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

相关文章

  • Golang rabbitMQ生产者消费者实现示例

    Golang rabbitMQ生产者消费者实现示例

    这篇文章主要为大家介绍了Golang rabbitMQ生产者消费者实现的示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • Go语言使用Etcd实现分布式锁

    Go语言使用Etcd实现分布式锁

    etcd是近几年比较火热的一个开源的、分布式的键值对数据存储系统,本文将介绍如何利用Etcd实现分布式锁,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-05-05
  • golang开发安装go-torch火焰图操作步骤

    golang开发安装go-torch火焰图操作步骤

    这篇文章主要为大家介绍了golang开发安装go-torch火焰图操作步骤
    2021-11-11
  • Go语言中map集合的具体使用

    Go语言中map集合的具体使用

    本文主要介绍了Go语言中map集合的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Go语言入门exec的基本使用示例

    Go语言入门exec的基本使用示例

    这篇文章主要为大家介绍了Go语言入门exec在go语言中的基本使用示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Go微服务项目配置文件的定义和读取示例详解

    Go微服务项目配置文件的定义和读取示例详解

    这篇文章主要为大家介绍了Go微服务项目配置文件的定义和读取示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 试了下Golang实现try catch的方法

    试了下Golang实现try catch的方法

    虽然在使用Golang的时候发现没有try catch这种错误处理机制但是想一想golang作为一门优雅的语言,似乎也是情理之中。那么够怎么捕获异常呢,本文就来介绍一下
    2021-07-07
  • GoFrame框架使用避坑指南和实践干货

    GoFrame框架使用避坑指南和实践干货

    这篇文章主要为大家介绍了GoFrame框架使用避坑指南和实践干货,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Golang单元测试与覆盖率的实例讲解

    Golang单元测试与覆盖率的实例讲解

    这篇文章主要介绍了Golang单元测试与覆盖率的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Go语言JSON编解码神器之marshal的运用

    Go语言JSON编解码神器之marshal的运用

    这篇文章主要为大家详细介绍了Go语言中JSON编解码神器——marshal的运用,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-09-09

最新评论