【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
推荐阅读
- Go|Docker后端部署详解(Go+Nginx)
- GO|GO,GO,GO!
- Go成长之路|go中判断空字符串、nil和len(t)的用法
- go编译tools
- Go语言之GRPC
- go grpc安装与使用
- goroutine 调度原理
- Go|Go进阶之路——复杂类型
- Go进阶之路——变量