码迷,mamicode.com
首页 > 其他好文 > 详细

Go切片

时间:2020-01-22 11:14:05      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:方式   printf   直接   声明   imp   pre   内置函数   说明   --   

1. 切片介绍

技术图片

package main
import (
	"fmt"
)

func main() {

	//演示切片的基本使用
	var intArr [5]int = [...]int{1, 22, 33, 66, 99}
	//声明/定义一个切片
	//slice := intArr[1:3]
	//1. slice 就是切片名
	//2. intArr[1:3] 表示 slice 引用到intArr这个数组
	//3. 引用intArr数组的起始下标为 1 , 最后的下标为3(但是不包含3)
	slice := intArr[1:3]
	fmt.Println("intArr=", intArr) //[1 22 33 66 99]
	fmt.Println("slice 的元素是 =", slice) //  [22 33]
	fmt.Println("slice 的元素个数 =", len(slice)) // 2
	fmt.Println("slice 的容量 =", cap(slice)) //4 //切片的容量是可以动态变化

	fmt.Printf("intArr[1]的地址=%p\n", &intArr[1]) //intArr[1]的地址=0xc00000c2d8
	fmt.Printf("slice[0]的地址=%p slice[0==%v\n", &slice[0], slice[0])
	// slice[0]的地址=0xc00000c2d8 slice[0==22

	slice[1] = 34
	fmt.Println()
	fmt.Println()
	fmt.Println("intArr=", intArr) //intArr= [1 22 34 66 99]
	fmt.Println("slice 的元素是 =", slice) //  [22 34]

}

2. 切片的内存布局

技术图片

 3. 使用切片的三种方式

技术图片

技术图片

技术图片

package main
import (
	"fmt"
)

func main() {

	//演示切片的使用 make
	var slice []float64 = make([]float64, 5, 10)
	slice[1] = 10
	slice[3] = 20
	//对于切片,必须make使用.
	fmt.Println(slice) //[0 10 0 20 0]
	fmt.Println("slice的size=", len(slice)) //5
	fmt.Println("slice的cap=", cap(slice))  //10


	//方式3
	fmt.Println()
	//第3种方式:定义一个切片,直接就指定具体数组,使用原理类似make的方式
	var strSlice []string = []string{"tom", "jack", "mary"}
	fmt.Println("strSlice=", strSlice) //[tom jack mary]
	fmt.Println("strSlice size=", len(strSlice)) //3
	fmt.Println("strSlice cap=", cap(strSlice)) //3

}

技术图片

4. 方式一和方式二的区别

技术图片

5. 切片的遍历

	//使用常规的for循环遍历切片
	var arr [5]int = [...]int{10, 20, 30, 40, 50}
	slice := arr[1:4]
	for i := 0; i < len(slice); i++ {
		fmt.Printf("slice[%v]=%v ", i, slice[i])
	}

	fmt.Println()
	//使用for--range 方式遍历切片
	for i, v := range slice {
		fmt.Printf("i=%v v=%v \n", i, v)
	}

6. 切片内置函数

        //用append内置函数,可以对切片进行动态追加
	var slice3 []int = []int{100, 200, 300}
	//通过append直接给slice3追加具体的元素
	slice3 = append(slice3, 400, 500, 600)
	fmt.Println("slice3", slice3) //100, 200, 300,400, 500, 600

	//通过append将切片slice3追加给slice3
	slice3 = append(slice3, slice3...) // 100, 200, 300,400, 500, 600 100, 200, 300,400, 500, 600
	fmt.Println("slice3", slice3)


	//切片的拷贝操作
	//切片使用copy内置函数完成拷贝,举例说明
	fmt.Println()
	var slice4 []int = []int{1, 2, 3, 4, 5}
	var slice5 = make([]int, 10)
	copy(slice5, slice4)
	fmt.Println("slice4=", slice4)// 1, 2, 3, 4, 5
	fmt.Println("slice5=", slice5) // 1, 2, 3, 4, 5, 0 , 0 ,0,0,0    

技术图片

技术图片

 

Go切片

标签:方式   printf   直接   声明   imp   pre   内置函数   说明   --   

原文地址:https://www.cnblogs.com/yzg-14/p/12227740.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!