目录:
1:数组【切片】
2:字典
3:函数
一、数组【切片】
数组和切片的区别就是一个是固定长度一个不固定。
定长数组-不定长数组
- 定长,不能追加元素
- 不定长,可以跟Python一样append追加元素
- 定长你定义变量的时候前面写数字、不定长 前面不写数字呗!!
- 切片的底层也是数组 可以动态改变长度
使用*函数append进行追加的
names := []string{"cfp","lixiao","haha"} names = append(names,"大神") //意思是:使用append函数 找到names 然后加一个元素,放到堆上,然后再赋值给names变量。记住append(names,"大神") 单单这样,names是不会改变的。
二、字典(map)
字典和Python的字典一样的,也是key/value。存储的key是经过哈希运算的。
2.1:声明方式
注意点1!使用字典一定要先分配空间
注意点2!在map中不存在访问越界的问题,它认为所有的key都是有效的。不像Python如果你dict["不存在的key"]就会报错!,所以访问一个不存在的key不会崩溃,它会返回这个类型的零值。
所以无法通过获取value来判断一个key是否存在,因此我们需要一个能够校验key是否存在的方式!
以下方式:
value,ok := idnames[1]
如何id=1是存在的,value就是该key的值,此时的ok是true。反之如何id=1不存在,value就是零值,ok是false。
注意点3:并发任务处理的时候,需要对map进行上锁,要不然你有人读有人写,go程序会崩溃的。
使用*函数删除
delete(指定那个map,指定要删除哪个key)
二、切片
三、字典