数组
定义数组 如: var ar[4] int ar[0] =2 初始化 如: var ar1 = [4] int{1,2,3,4} var arr2 = [4] int{1:2,3:2} //下标1值2 下标3值为2 var arr3 = [...]int{1, 2, 3, 4} //[]中用...代替表示数组大小浮动的 len(arr3) 得到长度 //range遍历: for i,v := range arr3{ fmt.Print(i) fmt.Print(v) } //类似java的foreach for(:) 不过range可以得到index //多维数组定义 如 var ar1 = [4][5] int{{1,2,3,4},{1,2,3,4},{1,2,3,4}}
切片slice
因为数组长度是固定的 所以引入了切片 可以认为是长度可变的数组 语法与数组类似 []中不定义长度 定义: 数组定义:var ar1 = [4] int{1,2,3,4} 切片定义:var ar1 = [] int{1,2,3,4} 或通过make定义切片 make([]type, len, cap) len长度 cap最大容量 var arr1 = make([]int, 3) arr1[0] = 1 例子 var arr2 = make([]int, 2,3) //长度2 容量3 slice1[0]=1 slice1[1]=1 slice1[2]=1//报错 因为初始长度为2 再往里面添加需扩容 扩容用下面的方式 slice1 = append(slice1,2,3,4,5,6,7)//用append扩容 //当触发扩容时 容量*2 //有点类似java的 new hashmap(容量)扩容 //切片值也可以截取数组来获取 类似js的slice 如 var arr4 = [4] int{1,2,3,4} s2:=arr4[0:3] //下标0到3的值 //拷贝 类似java beanutils.copy() var s1 = [] int{1,2,3,4} var s2 = [] int{5,6,7} copy(s1,s2) //s2拷贝到s1 s1值{5,6,7,4} copy(s1,s2[2:])//s2下标2后值都拷贝到s1 s1值{7,2,3,4}
map
//map定义 var m1 map[int] string var m2 = make(map[int]string) //make定义 var m3 = map[int]string{1:"one",2:"two"} //java中map添加数据有get put的api //go添加查询挺像操作数组 m1[0]="one" //报错 m1的定义方式无法操作 这个要注意 一般用make定义map m2[0]="one" //添加one 类似java的map.put(0,"one")
//删除map
delete(m1,0) //删除m1中key为0的值 //切片中添加map var silm = make([]map[int] string,3,4) //定义切片就多写一个[] silm = append(silm, m2) silm = append(silm, m3)
strings
strings包 strings.Contains("abcde", "ab") //字符串”abcde“是否包含”ab“ strings.ContainsAny("abcde","ak") //后面字符串任意字符是否与前参数一致 true strings.Count("abcde","ab") //ab字符串出现次数 strings.HasPrefix("abcde","ab") //是否以”ab“开头 strings.HasSuffix("abcde","de")//是否以”de“结尾 strings.Index("abcde","cd") //cd最初出现的下标 strings.IndexAny("abcde","ce") //ce任意字符最初出现的下标 strings.LastIndex("abcde","cd") //ce最后出现的下标 strings.Join(数组,拼接字符串) //将数组拼接成字符 strings.Split(字符串,切割符号) //将字符串切割成数组 strings.Repeat("hello",2) //输出hellohello strings.Replace("hello", "e", "a", 2)//字符串出现e替换为a 有出现2次替换 -1所以都替换 strings.ToLower("") //字符串都替换小写 strings.ToUpper("") //字符串都替换大写
strconv
strconv包 java中字符串+任意类型都能变成字符串 如"1"+100 输出"1100" 但是go不支持 不同类型不能直接转 需要通过strconv strconv.Atoi("3") //将字符串转int strconv.Itoa(3) //int转字符串 //同上 通过strconv和idea配合 能快速定位到需要的api strconv.ParseBool("true") strconv.FormatBool(true)
list链表
//初始化list 变量名 := list.New() var 变量名 list.List //插入元素 l := list.New() l.PushBack("first") //插入链表尾部 l.PushFront(67) //插入链表头部 l.InsertAfter("height","first") //在元素"first"后插入元素"height" l.InsertBefore("height","first") //在元素"first"前插入元素"height" l.Remove("first") //移除元素"first" //遍历list for i:=l.Front();i!=nil;i=i.Next(){ fmt.Println(i,Value) }