go语言切片

简介: go语言切片

介绍一下Go语言的切片



(一)切片产生背景


  数组大小限定长度限定并且不可以进行扩容,在固定的条件下非常局限
  切片可以实现对数组的动态切割,可以进行切割、裁剪


(二)切片的定义


(1)使用未知长度的数组


var 切片名 []切片类型


 例如:
  // 定义一个数组
  atemp := [11]int{1, 2, 3, 4, 5, 6, 9, 8, 7, 0}
  // 声明切片,并初始化
  var a []int = atemp[:]
  a1 := atemp[3:]
  a2 := atemp[:6]


(2)使用make进行初始化


make类似于new的作用,但是又有一些不同:
  new(T) 为每个新的类型T分配一片内存,初始化为 0 并且返回类型为*T的内存地址:这种方法 
    返回一个指向类型为 T,值为 0 的地址的指针,它适用于值类型如数组和结构体;它相当于 &T{}。
  make(T) 返回一个类型为 T 的初始值,它只适用于3种内建的引用类型:切片、map 和 channel
初始化方法:
  a:=make(参数1,参数2,参数3)
    参数1:切片类型
    参数2:切片长度
    参数3:切片的容量
    判断一个切片是否满了可以用len()测试切片长度、cap()测试切片容量
    如果切片内的容量满了切片会进行加倍扩容,每次扩大后的容量是原来的两倍
  切片有容量与长度这一概念与数组有本质的区别


 初始化切片并进行扩容(扩容是自动的)
  b := make([]int, 3, 5)
  //append函数参数第一个是目标切片,后来的是加入的参数列表
  //下例将1,2,3加入切片内(加入三次)
  b = append(b, 1, 2, 3)
  b = append(b, 1, 2, 3)
  b = append(b, 1, 2, 3)


(三)空切片初始值为nil


  空切片声明方式:
    var a[]int


目录
相关文章
|
5天前
|
安全 网络协议 Go
Go语言网络编程
【10月更文挑战第28天】Go语言网络编程
93 65
|
5天前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
27 13
|
1天前
|
测试技术 Go
go语言中测试工具
【10月更文挑战第22天】
8 4
|
1天前
|
SQL 关系型数据库 MySQL
go语言中数据库操作
【10月更文挑战第22天】
10 4
|
1天前
|
缓存 前端开发 中间件
go语言中Web框架
【10月更文挑战第22天】
11 4
|
5天前
|
网络协议 安全 Go
Go语言的网络编程基础
【10月更文挑战第28天】Go语言的网络编程基础
22 8
|
4天前
|
Go
go语言的复数常量
【10月更文挑战第21天】
17 6
|
4天前
|
Go
go语言的浮点型常量
【10月更文挑战第21天】
13 4
|
4天前
|
编译器 Go
go语言的整型常量
【10月更文挑战第21天】
15 3
|
5天前
|
Go
go语言编译时常量表达式
【10月更文挑战第20天】
16 3