博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go语言中分片(Slice)的其他使用方式
阅读量:7071 次
发布时间:2019-06-28

本文共 1717 字,大约阅读时间需要 5 分钟。

  hot3.png

主要讲解Slice 的定义、设置、复制、删除 操作

主要知识点

  • Slice的定义与初始值
  • 熟悉Slice append 之后 len 和 cap 的增长情况
  • 手工指定 Slice 的 len 和 cap
  • Slice 的 复制操作
  • Slice 的删除操作(从中间、最前端、最后端 删除)

以下为代码示例:

package mainimport "fmt"//输出Slice的各项值func printSlice(s []int) {	fmt.Printf("val=%v, len=%d, cap=%d\n",		s, len(s), cap(s))}func sliceOps() {	fmt.Println("Creating slice")	var s []int // Slice 在没赋值的情况下 值为  nil	for i := 0; i < 10; i++ {		printSlice(s)		//val=[], len=0, cap=0		//val=[1], len=1, cap=1		//val=[1 3], len=2, cap=2		//val=[1 3 5], len=3, cap=4		//val=[1 3 5 7], len=4, cap=4		//val=[1 3 5 7 9], len=5, cap=8		//val=[1 3 5 7 9 11], len=6, cap=8		//val=[1 3 5 7 9 11 13], len=7, cap=8		//val=[1 3 5 7 9 11 13 15], len=8, cap=8		//val=[1 3 5 7 9 11 13 15 17], len=9, cap=16		// 此处可以看出 随着不断增加 Slice的 len 会随着值的数量递增		// 但是 所占空间 一旦满了之后,就会执行翻倍操作		s = append(s, 2*i+1)	}	fmt.Println(s) //[1 3 5 7 9 11 13 15 17 19]	s1 := []int{2, 4, 6, 8}	printSlice(s1) //val=[2 4 6 8], len=4, cap=4	//定义一个长度为16的空Slice	s2 := make([]int, 16)	//定义一个长度为16,占用空间cap 为32 的Slice	s3 := make([]int, 10, 32)	printSlice(s2) //val=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], len=16, cap=16	printSlice(s3) //val=[0 0 0 0 0 0 0 0 0 0], len=10, cap=32	fmt.Println("Copying slice")	copy(s2, s1)  //将 s1 的值 复制 到 s2 中	printSlice(s2) //val=[2 4 6 8 0 0 0 0 0 0 0 0 0 0 0 0], len=16, cap=16	fmt.Println("删除掉中间的元素")	s2 = append(s2[:3], s2[4:]...) //移除第三个元素	printSlice(s2) //val=[2 4 6 0 0 0 0 0 0 0 0 0 0 0 0], len=15, cap=16	fmt.Println("移除第一个元素")	s2 = s2[1:]	printSlice(s2) //val=[4 6 0 0 0 0 0 0 0 0 0 0 0 0], len=14, cap=15	fmt.Println("移除最后一个元素")	s2 = s2[:len(s2)-1]	printSlice(s2)  //val=[4 6 0 0 0 0 0 0 0 0 0 0 0], len=13, cap=15}func main() {	sliceOps()}

 

转载于:https://my.oschina.net/ruoli/blog/1815479

你可能感兴趣的文章
最小堆排序
查看>>
iOS-网络爬虫
查看>>
jira
查看>>
elasticsearch rpm 安装
查看>>
Python基础总结(字符串常用,数字类型转换,基本运算符与流程控制)
查看>>
数据预处理——剔除异常值,平滑,归一化
查看>>
Visual stuido 项目路径的奇怪问题
查看>>
java局部变量和临时变量
查看>>
返回杨辉三角前 n 层的数字
查看>>
布局(2、相对布局)
查看>>
在 Eclipse 上配置tomcat7.0并创建工程发布
查看>>
腾讯移动分析 签名代码示例
查看>>
重新回归博客园,写在开始的话。
查看>>
JavaScript定义函数
查看>>
AJAX的基础
查看>>
安全使用电子邮件十三法
查看>>
开发人员必知的20+HTML5技巧
查看>>
组合数学
查看>>
Loadrunner如何添加负载机
查看>>
Vue中组件之间的通信方式
查看>>