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怎么判断是否传递了数值
起因
今天在做项目的时候有个需求就是状态必须传递,在golang中接收到json参数解析到结构体中数值类型不传递有一个默认的0,但是状态也可以传递0,怎么来判断是否传递了这个数值呢?
解决办法
方法一:
在解析之前给结构体默认值,案例如下:
var jsonBlob = []byte(`[ {"Name": "Platypus", "Order": "Monotremata"} ]`) type Animal struct { Name string Order string ID int } animals := &Animal{ID: -9999} err := json.Unmarshal(jsonBlob, animals) if err != nil { fmt.Println("error:", err) } fmt.Printf("%+v", animals)
方法二:
使用额外的结构体+指针类型,如果不传递解析为nil而不是0,如下:
type NodeXXX struct { Date string `json:"date"` Count *int32 `json:"count"` }
方法三:
别人已经写好了库,自己使用就行
https://godoc.org/gopkg.in/guregu/null.v3
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。
相关推荐
-
golang数组-----寻找数组中缺失的整数方法
问题:由n-1个整数组成的未排序数组,元素都是1~n的不同整数,找出其中缺失的整数 方法一: 思路:是原数组的和 减去 丢失元素后的数组的和,就得到丢失的元素了 代码如下: package main import ( "errors" "fmt" ) func getMissingElement(arr []int) int { var sumA, sumB int if arr == nil || len(arr) <= 0 { errors.New(&qu
-
golang求连续子数组的最大和实例
问题描述: 给定一个数组 array[1, 4, -5, 9, 8, 3, -6],在这个数字中有多个子数组,子数组和最大的应该是:[9, 8, 3],输出20,再比如数组为[1, -2, 3, 10, -4, 7, 2, -5],和最大的子数组为[3, 10, -4, 7, 2],输出18. 代码如下: package main import ( "fmt" ) func getMaxSum(arr []int) int { var sum, maxSum int for i :=
-
golang实现整型和字节数组之间的转换操作
我就废话不多说了,大家还是直接看代码吧~ //isSymbol表示有无符号 func BytesToInt(b []byte, isSymbol bool) (int, error){ if isSymbol { return bytesToIntS(b) } return bytesToIntU(b) } //字节数(大端)组转成int(无符号的) func bytesToIntU(b []byte) (int, error) { if len(b) == 3 { b = append([]b
-
golang移除数组中重复的元素操作
我就废话不多说了,大家还是直接看代码吧~ 方法一: //这种发放适用于string,int,float等切片,会对切片中的元素进行排序 func SliceRemoveDuplicates(slice []string) []string { sort.Strings(slice) i:= 0 var j int for{ if i >= len(slice)-1 { break } for j = i + 1; j < len(slice) && slice[i] == sl
-
golang将切片或数组根据某个字段进行分组操作
我就废话不多说了,大家还是直接看代码 吧~ package main import ( "fmt" "sort" ) type Person struct { Name string Age int } func main() { p1 := Person{"Tom",20} p2 := Person{"Lily",21} p3 := Person{"Linda",23} p4 := Person{&quo
-
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: runti
-
javascript如何判断数组内元素是否重复的方法集锦
var str = new Array(); 比如有这么一组数组,里面放了20个18位的身份证号码 要判断里面的身份证号码是否有重复 如何快速判断? 复制代码 代码如下: var ary = new Array("111","22","33","111"); var s = ary.join(",")+","; for(var i=0;i<ary.len
-
利用JS十分钟判断数组中存在元素的多种方式
前言 在前端开发中,经常会遇到要判断数组中是否存在某个元素.其实判断的方式有很多种,我们一个一个来了解下. 我们先来定义一个数组: const arr = [ 13, false, 'abcd', undefined, 13, null, NaN, [1, 2], { a: 123 }, () => Date.now(), new Date('2021/03/04'), new RegExp('abc', 'ig'), Symbol('sym'), ]; 在这个数组中,我们包含了好几种类型:nu
-
PHP判断数组是否为空的常用方法(五种方法)
本文介绍了PHP开发中遇到的数组问题,这里介绍了判断PHP数组为空的5种方法,有需要的朋友可以借鉴参考一下. 1. isset功能:判断变量是否被初始化 说明:它并不会判断变量是否为空,并且可以用来判断数组中元素是否被定义过 注意:当使用isset来判断数组元素是否被初始化过时,它的效率比array_key_exists高4倍左右 <?php $a = ''; $a['c'] = ''; if (!isset($a)) echo '$a 未被初始化' . ""; if (!iss
-
jQuery判断数组是否包含了指定的元素
要判断数组中是否包含某个元素,从原理来来说,就是遍历整个数组,然后判断是否相等, 复制代码 代码如下: var arr = [ "xml", "html", "css", "js" ]; $.inArray("js", arr); //返回 3, 如果不包含在数组中,则返回 -1; 以上就是本文的全部内容了,有需要的小伙伴参考下吧
-
JavaScript判断数组是否包含指定元素的方法
本文实例讲述了JavaScript判断数组是否包含指定元素的方法.分享给大家供大家参考.具体如下: 这段代码通过prototype定义了数组方法,这样就可以在任意数组调用contains方法 /** * Array.prototype.[method name] allows you to define/overwrite an objects method * needle is the item you are searching for * this is a special variab
-
判断数组是否包含某个元素的js函数实现方法
判断数组是否包含某个元素的js函数实现方法 Array.prototype.contains = function(obj) { var i = this.length; while (i--) { if (this[i] === obj) { return true; } } return false; } 或 Array.prototype.contains = function(element) { for (var i = 0; i < this.length; i++) { if (t
-
python实现判断数组是否包含指定元素的方法
本文实例讲述了python实现判断数组是否包含指定元素的方法.分享给大家供大家参考.具体如下: python判断数组是否包含指定的元素的方法,直接使用in即可,python真是简单易懂 print 3 in [1, 2, 3] # membership (1 means true inventory = ["sword", "armor", "shield", "healing potion"] if "healin
-
Python实现变量数值交换及判断数组是否含有某个元素的方法
本文实例讲述了Python实现变量数值交换及判断数组是否含有某个元素的方法.分享给大家供大家参考,具体如下: 本来,这两个问题都属于的编程入门简单得不能再简单的问题,根本就不值得写篇记录来记录的. 一.变量数值交换 先说变量数值交换,从C语言开始,我们就知道要先设置一个临时变量,再把某元素的值覆盖此临时变量,避免临时覆盖等,如果不设置临时变量,还有位运算的交换形式 然而Python中根本就不用这么复杂,如果要交换变量e1,e2彼此的值,就下面一行代码就足矣: e1,e2=e2,e1; 比如,如下
-
Java中高效的判断数组中某个元素是否存在详解
一.检查数组是否包含某个值的方法 使用List public static boolean useList(String[] arr, String targetValue) { return Arrays.asList(arr).contains(targetValue); } 使用Set public static boolean useSet(String[] arr, String targetValue) { Set<String> set = new HashSet<Stri
随机推荐
- 详解CSS样式中的!important、*、_符号
- PHP对象的浅复制与深复制的实例详解
- DOS 批处理命令For循环命令详解
- SQLite 内存数据库学习手册
- 一根网线内的8根线哪4根是传输数据的,哪四根是防干扰的
- asp.net gridview代码绑定
- js实现文字闪烁特效的方法
- 浅谈js的setInterval事件
- Android 属性动画ValueAnimator与插值器详解
- Java Timezone类常见问题_动力节点Java学院整理
- 如何在windows桌面使用ftp上传文件到linux服务器
- 解决php的“It is not safe to rely on the system’s timezone settings”问题
- IIS 防盗链 软件
- 从汇编看c++中默认构造函数的使用分析
- 详解Java的MyBatis框架中的缓存与缓存的使用改进
- 输出1000以内的素数的算法(实例代码)
- Python实现查看系统启动项功能示例
- JavaScript 正则表达式与字符串查找方法
- 配置node服务器并且链接微信公众号接口配置步骤详解
- 详解vuex数据传输的两种方式及this.$store undefined的解决办法