在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
切片的简介概念 切片是一个引用类型,可以创建"字符串"切片,可以创建"整型"切片等 切片和数组的区别( !!!!重点)
创建切片方法 var s []int //创建int类型切片 var s []string //创建string类型切片 切片的内部实现 切片是一个很小的对象,它对底层的数组(内部是通过数组保存数据的)进行了抽象,并提供相关的操作方法; 切片是有三个字段的数据结构,这些数据结构包含Go语言需要操作底层数组的元数据
切片的创建和初始化(字面创建)And 对比
一、字符串类型 和 字符串类型切片 和 字符串类型数组对比 //创建 "字符串" 数据类型 myStr1 := "hahaha" fmt.Println(myStr1) fmt.Printf("%T \n",myStr1) //结果: hahaha #字符串打印结果 string #字符串 数据类型 --------------------------------------------------------- //创建 "字符串"类型的切片 myStr2 := []string{"zhangsan", "list", "wangwu"} fmt.Println(myStr2) fmt.Printf("%T \n",myStr2) //结果: [zhangsan list wangwu] #字符串类型切片打印的结果 []string #字符串类型的切片 --------------------------------------------------------- //创建"字符串"类型的数组 myStr3 := [3]string{"zhangsan","lisi","wangwu"} fmt.Println(myStr3) fmt.Printf("%T",myStr3) //结果: [zhangsan lisi wangwu] [3]string #字符串类型的数组
二、int数据类型 和 int类型切片 和 int类型的数组对比 //创建int类型的 数据类型 myInt03 := 28 fmt.Println(myInt03) fmt.Printf("%T",myInt03) //结果: 28 int #数据类型为int ------------------------------------------------------- //创建int类型的 数组 myInt01 := [3]int{1,2,3} #需要指定长度 fmt.Println(myInt01) fmt.Printf("%T \n",myInt01) //结果: [1 2 3] [3]int #是int类型的数组 ------------------------------------------------------ //创建int类型的 切片 myInt := []int{1,2,3} #不需要指定长度 fmt.Println(myInt) fmt.Printf("%T",myInt) //结果: [1 2 3] []int #打印出来的数据类型里 不带长度标识
切片的创建和使用切片常用的操作和含义
通过make()函数声明切片 使用Go语言内置的make()函数创建切片,此时需要传入一个参数来指定切片的长度 // 创建一个整型切片 // 其长度和容量都是 5 个元素 slice := make([]int, 5) 此时只指定的切片的长度,那么切片的长度和容量是相等的,都是5; 也可以分别指定长度和容量 // 创建一个整型切片 // 其长度为 3 个元素,容量为 5 个元素 slice := make([]int, 3, 5)
二、声明切片(普通方式) //声明一个空的切片,未引用任何数组,所以这个切片现在nil,意思就是切片的零 值 var s = []int fmt.Println(s == nil) 2.1上面的结果为什么nil? 因为切片只是对一个数组的引用,切片是不存储任何数据的,数组是存在数组中的; 当切片需要扩容时,就会创建一个合适长度的新数组,以存储更多数据; 当我们用var s []int创建一个切片时,它还没有引用任何数组,所以它的值时nil 下面我们创建一个切片,并引用数组 //创建一个空int类型切片 var s []int //创建一个int类型数组 var arry = [9]int{1,2,3,4,5,6,7,8,9} //引用数组,对其进行切片,截取小标2:4-1的元素 s = arry[2:4] fmt.Println(s) //结果: [3 4] 2.2数组的值被修改, 会不会影响切片的结果 //创建一个空 int类型切片 var s []int //创建一个int类型数组 var arry = [9]int{1,2,3,4,5,6,7,8,9} //窃取数组a的2:4-1元素的值 s = arry[2:4] //对数组a的下标2:4-1元素的值进行修改. arry[2] = 33 arry[3] = 44 //打印切片s fmt.Println(s) //结果: [33 44]
2.3切片初始化
|
请发表评论