golang笔记
2019-07-18 本文已影响0人
honkkki
- go中数组长度不同无法进行比较,数组长度也是数组的组成部分;
- 指向数组的指针和指针数组:指向数组的指针是取数组的引用,指针数组是引用&作为数组中的值;
- 数组是值类型传递copy,切片是引用类型;
- function传递参数时,int、...int、string等类型传递的是值(copy),传切片是传递地址,直接改变原来的值;
- %c用字符打印,%d用整形打印,%T注意大写打印类型,%v自动匹配类型,%+v详细打印;
- map:
value,ok := map[0] ,第二个返回值表示key是否存在;map无序;函数参数传递是引用传递;
可以扩容; - 结构体匿名字段选择性赋值:
加上匿名字段名:后面再写结构体
s1 := Teacher{Person2:Person2{Name:"golang"}, id:1}
- 结构体指针操作成员变量需要有合法指向
var p1 *Person
var s Person
//指向s的地址
p1 = &s
p1.Name = "tom"
- 方法调用,变量使用大多是就近原则;
- channel:关闭channel无法再发送数据到管道,可以继续读取管道中的数据。空管道会阻塞收发数据。
单向chan无法转化为双向chan,双向可以转化为单向chan。
- 位运算符是对二进制而言的, 异或^是两个二进制对应位置不相等则为1, <<或者>>都要转为二进制后计算,
1 << 10 = 10000000000 = 2的10次方 = 1024 常用来表示内存大小常量
切片
- 切片:指向相同数组或切片时改变切片会导致另外一个也改变,切片不保存值,改变的都是底层数组的值。
切片append追加元素时,底层数组的内存地址改变,容量增加。 - s1 : = append(s1, s2...) 表示往s1中追加s2中的元素,...表示拆分s2切片中的元素。
实现删除切片中元素可以使用append.
a = append(a[:index], a[index+1:]...)
make只能用于创建slice,map,chan内存。