go注意点

go类型用别名之后就属于新的类型。

go指针不能+1取下一个地址。

go没有前置++,--(++a是错的)

用==比较数组(注意数组可以比较,切片不能比较)

  相同维数且含有相同个数元素的数组才可以进行比较

  每个元素都相同的才相等

&^ 按位清零

1 &^ 0 -- 1

1 &^ 1 -- 0

go-for

执行无限循环

for {}

go 在switch里面不需要添加break,语句自己带有break

switch支持case里面填写多条件

例如:

switch {

  case 0<=NUM &&NUM <=3

    fmt.print(1)

  case 5,6:

-----------------------

数组和切片(切片是共享存储结构的)

var a [3]int //声明并初始化为默认零值

}

循环常用为:

for i:=0;i<len(arr);i++ {}

推荐使用for idx,e := range arr{}

数组截取方法(不支持负数获取)

例如:

a :=[...]int{1,2,3,4,5}

a[1:2]//2

a[1:3]//2,3

a[1:len(a)]//2,3,4,5

a[1:]//2,3,4,5

a[:3]//1,2,3

数组和切片的区别是,数组是有长度的,切片是没有长度的

切片使用append填充数据

make(arr len,cap)   //创建切片

如果一个切片用append进去的时候,那么数组增加会在cap中调取

例如:

make(a,3,5)

fmt.print(a)//0,0,0

a=append(a,666)

fmt.print(a)//0,0,0,666

当一个参数放到切片中的时候,如果空间不够就会*2的整长

例如:

s:=[]int{}

for i:=0;i<10;i++ {

s=append(s,i)

t.log(len(s),cap(s))//len对一个一个递增,但是cap会在不够的情况下翻倍递增

}

//cap比较特殊

----------

map类型

m3 := make(map[int]int,10)//这个时候打印出来的长度为0,当make用与map的时候,第二个参数实际上为map

在访问Key不存在时,既然会返回零值,不能通过返回nil来判断元素是否存在

-----------

猜你喜欢

转载自www.cnblogs.com/yifan72/p/11299339.html