再学golang文档(2)

一、go语言切片

声明:
1、var name []type  / var name []type{}
      ==nil                      != nil
2、 make( []Type, size, cap )
		!=nil
使用 make() 函数生成的切片一定发生了内存分配操作
切片是动态结构,只能与 nil 判定相等,不能互相判定相等
Go语言append()为切片添加元素:
var a []int
a = append(a,1)切片后面追加元素1    (两倍的扩容,扩容时重新分配地址)
a = append([]int{1},a...) 切片前面追加元素1  (追加就重新分配地址,效率比后面追加差很多)
a = append(a[:i],append([]int{x},a[i:]...)...)   //在第i个位置插入x
a = append(a[:i],append([]int{1,2,3}, a[i:]...)...)  //在第i个位置插入切片
Go语言copy():
切片复制(切片拷贝)
copy( destSlice, srcSlice []T) int
slice1 := []int{1, 2, 3, 4, 5}
slice2 := []int{5, 4, 3}
copy(slice2, slice1) // 只会复制slice1的前3个元素到slice2中
copy(slice1, slice2) // 只会复制slice2的3个元素到slice1的前3个位置
Go语言从切片中删除元素:
从开头位置删除
a = []int{1, 2, 3}
直接移动数据指针:
a = a[1:] // 删除开头1个元素
a = a[N:] // 删除开头N个元素
不移动数据指针:
a = append(a[:0],a[1:]...)
a = append(a[:0],a[N:]...)
使用copy:
a = a[:copy(a,a[1:])]
a= a[:copy(a,a[N:])]

从中间位置删除
a = append(a[:i],a[i+1:]...)
a = a[:i+copy(a[i:],a[i+1:])]
从尾部删除(速度最快)
a = a[:len(a)-1]
a= a[:len(a)-N]
Go语言range关键字:
循环迭代切片
slice := []int{1,2,3,4}
for index,value := slice {
	fmt.Printf("index:%d value:%d\n", index,value)
}
for i:=0;i < len(slice); i++ {
	fmt.Println(slice[i])
}
Go语言多维切片简述:
var sliceName [][]...[]sliceType
//声明一个二维切片
var slice [][]int
//为二维切片赋值
slice = [][]int{{10}, {100, 200}}

// 声明一个二维整型切片并赋值
slice := [][]int{{10}, {100, 200}}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值