go语言笔记

61 阅读1分钟

\n\nslice1 := []int{1,2,3,4,5,6}\n\nslice2 := make([]int,3)\n\ncopy(slice2,slice[1:4])\n\n前者是destination,后者是source\n\n还有个常用函数是append,用于向切片后面加元素\n\nslice1 := make([]int,0,10)\n\nslice1 = append(slice,1,2,3)\n\n注意如果加元素后超出容量后就会造成切片的扩容:整个容量在1024以下时,每次扩容*2;超过1024后,每次增加四分之一的容量。还要注意每次扩容go会新开辟一块空间,将原来的内容拷贝过来,所以这个操作还是会占据一定性能的。\n\n注意slice[i]是引用改动,但是for-range(for _,n := range slice{用n进行操作})循环是值改动,不会对slice产生实际影响。\n\n映射(Map)\n映射的定义:map[k]T\n\nkey,value结构:students["Jack"] = 11\n\n可用delete删除元素:delete(students,"Jack")\n\n也用make生成:students := make(map[string]int)\n\n注意遍历顺序不是插入顺序(指for-range方法 for k,v := range students {})\n\ngolang没有内置集合(Set)类型,用Map来实现Set\n\n数组、切片、映射这几个容器都不是并发安全的。