基础知识:

-其本身并不是数组,silce指向底层的数组

-作为变长数组的替代方案,可以关联底层数组的局部与全部

-为引用类型

-可以直接创建或从底层数组获取生成

-使用len()获取元素个数,cap()获取容量

-若果多个silce指向相同底层数组,其中一个的值改变会影响全部

声明:make([] T,len,cap)


切片使用:欺骗默认指向一段连续内存区域,可以使数组,也可以是切片本身

从数组生成切片:

var a = [3] int {1,2,3} //创建数组

fmt.Println(a,a[1:2]) //1代表起始位置,2代表终止位置

输出:[1,2,3] [2]

1、从指定位置生成切片

a[x:y] //x是起始位置,y是终止位置

2、表示原有切片

a[:]

3、清空切片:

a[0:0]

声明切片:

var name [ ]  T

//声明字符串切片

var strList [ ] string

//声明整型切片

var numList [ ] int

//声明一个空切片

var numListEmpty = [ ] int { }

使用make()函数构造切片

make([ ]T,size,cap) //T切片类型,size分配元素个数,cap切片容量

例子:func函数中

a:= make([ ]int,2) //默认容量为元素个数

b:= make([ ]int,2,10)//元素个数2,容量10     切片的容量根据根据元素个数成倍增长

fmt.Println(a,b)

fmt.Println(len(a),len(b))

输出:[0,0] [0,0]

2 , 2

使用append()函数为切片添加元素

格式:append(数组名,元素1,元素2,元素3……) //元素的添加个数可以是一个也可以是多个

例子:

var car [ ] string

car = append(car,"hello")//单个添加

car = append(car,"world","and","go","!")

添加切片

carComponent := [ ] string (“hello”,“I”,“am”,“C++”) //声明切片

car = append(car,team) //添加切片

fmt.Println(car)

输出结果:[hello world and go ! hello I am C++]

切片的复制:

copy(destSilce,srcSlice  [ ] T) int //destSilce为复制目标,srcSlice切片来源

package main

import "fmt"

func main() {

// 设置元素数量为1000

const elementCount = 1000

// 预分配足够多的元素切片

srcData := make([]int, elementCount)

// 将切片赋值

for i := 0; i < elementCount; i++ {

srcData[i] = i

}

// 引用切片数据,此时的切片传递的是地址值

refData := srcData

// 预分配足够多的元素切片

copyData := make([]int, elementCount)

// 将数据复制到新的切片空间中,此时数据复制只存在值的copy过程与地址无关

copy(copyData, srcData)

// 修改原始数据的第一个元素

srcData[0] = 999

// 打印引用切片的第一个元素

fmt.Println(refData[0])

// 打印复制切片的第一个和最后一个元素

fmt.Println(copyData[0], copyData[elementCount-1])

// 复制原始数据从4到6(不包含)

copy(copyData, srcData[4:6])

for i := 0; i < 5; i++ {

fmt.Printf("%d \n", copyData[i])

}

}

输出结果:

999

0 999

4

5

2

3

4

从切片中删除元素:

package main

import "fmt"

func main() {

seq := []string{"a", "b", "c", "d", "e"}

// 指定删除位置

index := 2

// 查看删除位置之前的元素和之后的元素,并依此将删除元素之前的元素按序打印,删除元素之后的元素按序打印

fmt.Println(seq[:index], seq[index+1:])

// 删除指定元素之后,删除点前后元素连接起来,将剩余元素按序打印

seq = append(seq[:index], seq[index+1:]...)

fmt.Println(seq)

}

基础知识:

-其本身并不是数组,silce指向底层的数组

-作为变长数组的替代方案,可以关联底层数组的局部与全部

-为引用类型

-可以直接创建或从底层数组获取生成

-使用len()获取元素个数,cap()获取容量

-若果多个silce指向相同底层数组,其中一个的值改变会影响全部

声明:make([] T,len,cap)


切片使用:欺骗默认指向一段连续内存区域,可以使数组,也可以是切片本身

从数组生成切片:

var a = [3] int {1,2,3} //创建数组

fmt.Println(a,a[1:2]) //1代表起始位置,2代表终止位置

输出:[1,2,3] [2]

1、从指定位置生成切片

a[x:y] //x是起始位置,y是终止位置

2、表示原有切片

a[:]

3、清空切片:

a[0:0]

声明切片:

var name [ ]  T

//声明字符串切片

var strList [ ] string

//声明整型切片

var numList [ ] int

//声明一个空切片

var numListEmpty = [ ] int { }

使用make()函数构造切片

make([ ]T,size,cap) //T切片类型,size分配元素个数,cap切片容量

例子:func函数中

a:= make([ ]int,2) //默认容量为元素个数

b:= make([ ]int,2,10)//元素个数2,容量10     切片的容量根据根据元素个数成倍增长

fmt.Println(a,b)

fmt.Println(len(a),len(b))

输出:[0,0] [0,0]

2 , 2

使用append()函数为切片添加元素

格式:append(数组名,元素1,元素2,元素3……) //元素的添加个数可以是一个也可以是多个

例子:

var car [ ] string

car = append(car,"hello")//单个添加

car = append(car,"world","and","go","!")

添加切片

carComponent := [ ] string (“hello”,“I”,“am”,“C++”) //声明切片

car = append(car,team) //添加切片

fmt.Println(car)

输出结果:[hello world and go ! hello I am C++]

切片的复制:

copy(destSilce,srcSlice  [ ] T) int //destSilce为复制目标,srcSlice切片来源

package main

import "fmt"

func main() {

// 设置元素数量为1000

const elementCount = 1000

// 预分配足够多的元素切片

srcData := make([]int, elementCount)

// 将切片赋值

for i := 0; i < elementCount; i++ {

srcData[i] = i

}

// 引用切片数据,此时的切片传递的是地址值

refData := srcData

// 预分配足够多的元素切片

copyData := make([]int, elementCount)

// 将数据复制到新的切片空间中,此时数据复制只存在值的copy过程与地址无关

copy(copyData, srcData)

// 修改原始数据的第一个元素

srcData[0] = 999

// 打印引用切片的第一个元素

fmt.Println(refData[0])

// 打印复制切片的第一个和最后一个元素

fmt.Println(copyData[0], copyData[elementCount-1])

// 复制原始数据从4到6(不包含)

copy(copyData, srcData[4:6])

for i := 0; i < 5; i++ {

fmt.Printf("%d \n", copyData[i])

}

}

输出结果:

999

0 999

4

5

2

3

4

从切片中删除元素:

package main

import "fmt"

func main() {

seq := []string{"a", "b", "c", "d", "e"}

// 指定删除位置

index := 2

// 查看删除位置之前的元素和之后的元素,并依此将删除元素之前的元素按序打印,删除元素之后的元素按序打印

fmt.Println(seq[:index], seq[index+1:])

// 删除指定元素之后,删除点前后元素连接起来,将剩余元素按序打印

seq = append(seq[:index], seq[index+1:]...)

fmt.Println(seq)

}

golang之切片的操作详解相关推荐

  1. python列表切片后得到剩余列表_python列表切片和嵌套列表取值操作详解

    python列表切片和嵌套列表取值操作详解 给出列表切片的格式: [开头元素::步长] # 输出直到最后一个元素,(最后一个冒号和步长可以省略,下同) [开头元素:结尾元素(不含):步长] # 其中, ...

  2. python对输入的字符串进行解析_python数据类型_字符串常用操作(详解)

    这次主要介绍字符串常用操作方法及例子 1.python字符串 在python中声明一个字符串,通常有三种方法:在它的两边加上单引号.双引号或者三引号,如下: name = 'hello' name1 ...

  3. python加密字符串小写字母循环后错两位_python数据类型_字符串常用操作(详解)

    这次主要介绍字符串常用操作方法及例子 1.python字符串 在python中声明一个字符串,通常有三种方法:在它的两边加上单引号.双引号或者三引号,如下: name = 'hello' name1 ...

  4. 【Python】Numpy数组的切片、索引详解:取数组的特定行列

    [Python]Numpy数组的切片.索引详解:取数组的特定行列 文章目录 [Python]Numpy数组的切片.索引详解:取数组的特定行列 1. 介绍 2. 切片索引 2.1 切片索引先验知识 2. ...

  5. 核心要素及常用操作详解

    核心要素及常用操作详解 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5z6s4kZN-1678660733651)(http://49.7.203.222:3000/ ...

  6. python基础-变量,变量类型,字符串str,元组tuple,列表list,字典dict操作详解(超详细)

    python基础--变量 (文章较长,若需要单独看某一个点,可点击目录直接跳转) 文章目录 python基础--变量 1. 变量 2. 变量类型 2.1数字类型 2.2 字符串 2.3 列表 2.4 ...

  7. python输入参数改变图形_Python基于Tensor FLow的图像处理操作详解

    本文实例讲述了Python基于Tensor FLow的图像处理操作.分享给大家供大家参考,具体如下: 在对图像进行深度学习时,有时可能图片的数量不足,或者希望网络进行更多的学习,这时可以对现有的图片数 ...

  8. 第 5 章 Nova - 041 - Resize Instance 操作详解

    Resize Instance 操作详解 Resize 的作用是调整 instance 的 vCPU.内存和磁盘资源. Instance 需要多少资源是定义在 flavor 中的,resize 操作是 ...

  9. SVN的Windows和Linux客户端操作详解

    SVN的Windows和Linux客户端操作详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Windows客户端操作 1.安装SVN客户端 a>.去官网下载svn软件 ...

最新文章

  1. 【C++】【六】约瑟夫问题
  2. PHP:第一章——PHP中的魔术常量
  3. linux系统12,Linux操作系统12则经典应用技巧
  4. Qt Creator构建Web应用程序
  5. c# uri.host_C#| Uri.IsHexEncoding()方法与示例
  6. 收藏 | 自监督视觉Transformer
  7. 20172318 2018-2019-1 《程序设计与数据结构》第9周学习总结
  8. 让其他CMS黯然失色的we7CMS
  9. CentOS 7 中英文桌面安装步骤详细图解
  10. mysql数据库 set类型_MYSQL数据库数据类型
  11. Python自然语言处理学习笔记(30):4.2 序列
  12. cv2中函数名的规则
  13. phpstudy不安装mysql_MySQL_mysql安装不上怎么办 mysql安装失败原因和解决方法,mysql数据库安装不了了!mysql最 - phpStudy...
  14. JAVA后端开发常用的Linux命令总结
  15. windows下完美的免费QT开发环境: QtCreator + VC2008Express
  16. 快速求实对称矩阵特征向量的技巧
  17. Node.js meitulu图片批量下载爬虫1.02版
  18. 023.二叉树的最近公共祖先
  19. 大数据高级开发工程师——Spark学习笔记(7)
  20. 微信朋友圈背景图片尺寸

热门文章

  1. 愤世嫉俗的程序员,在网上当起了“键盘侠”
  2. css清除浮动大全,共8种方法。
  3. 【STM32F429的DSP教程】第2章 Matlab R2018a的安装
  4. 为什么使用 XML?
  5. 网络基础——牛客网刷题第一波
  6. 爬虫输入关键字搜索爬取图片
  7. LWN:使用Jitsi进行视频会议!
  8. 数据统计分析软件介绍
  9. 电源电路设计常用软件,哪个适合你的应用?
  10. 计算机辅助英语,计算机辅助英语教学