Go语言|Go语言 切片,集合,字符串

【Go语言|Go语言 切片,集合,字符串】
Go语言 切片,集合,字符串

  • 切片
  • 集合
  • String

切片
package mainimport "fmt"func main() { //切片定义 常见 num:= make([]int,10) //添加 for i:=1; i<=10; i++{ num[i-1]=i fmt.Printf("%d \t",num[i-1]) //12345678910 } fmt.Println() num= append(num, 2) fmt.Println(num) //[1 2 3 4 5 6 7 8 9 10 2] //切片添加切片 num2:=[]int {1,2} num=append(num,num2...) fmt.Println(num) //[1 2 3 4 5 6 7 8 9 10 2 1 2] //进行切片 s:=num[:4] fmt.Println(s) //[1 2 3 4] //弊端 /* 从已有的数组上,直接创建切片,该切片的底层数组就是当前的数组 */ s[0]=100 fmt.Println(num)//[100 2 3 4 5 6 7 8 9 10 2 1 2] fmt.Println(s) //[100 2 3 4] /* 数组是值传递 ,而切片则是引用传递 数组存储的是地址,而切片则存储的一个数组的地址,所以切片会出现浅拷贝和深拷贝 深拷贝:拷贝的是数据本身 值类型的数据,默认都是深拷贝:array int float string bool struct 浅拷贝: 拷贝的是数据地址 导致多个变量指向同一块内存 引用类型的数据 默认都是浅拷贝:slice map */ fmt.Printf("%p\n",num) //0xc000078000 //切片转字符串(切片中的数据类型必须为字符类型) //var str string=string(num)//报错 cannot convert num (type []int) to type string num3:=[]byte{65,66,67,68,69} var str string=string(num3) fmt.Println(str) //ABCDE }

集合
package mainimport "fmt"func main() { //创建map三种形式 var map1 map[int]string //如果没有初始化map时,map=nil slice也是 无法直接使用 var map2 =make(map[int]string) var map3=map[string]int{"Go":93,"Python":100,"Java":99} fmt.Println(map1) //map[] fmt.Println(map2)//map[] fmt.Println(map3) //map[Go:93 Java:99 Python:100] //存储键值对在map中,类型一定要一致 map[key_type]value_type //map1[1]="张三" //因为map1没有初始化 所以这里会报assignment to entry in nil map //解决方案 if map1==nil{ map1=make(map[int]string) } //添加数据 map1[key]=value map1[1]="张三" map1[2]="李四" map1[3]="王五" //map1["张三"]="赵六" //报错 fmt.Println(map1) //map[1:张三 2:李四 3:王五] //删除数据 delete(map,key) delete(map1,2) fmt.Println(map1) //map[1:张三 3:王五] //遍历 for key,value :=range map1{ fmt.Printf("key=%d,value=https://www.it610.com/article/%s /t",key,value) //key=3,value=https://www.it610.com/article/王五key=1,value=张三 } }

String
package mainimport ( "fmt" "strconv" "strings" )func main() { //字符串定义 s1:="你好世界" //字符串遍历 //直接遍历 for i:=0; i

    推荐阅读