golang的array/slice
相同点
- 由相同类型的元素组合构成
- 元素有序排列,0为第一个元素下标
- 基本使用方法相同
区别
array声明时需要指定容量大小,而且无法修改
slice可通过append增加元素,当容量不够时,会自动扩容
array传递类型:值拷贝;slice传递类型:引用拷贝(有两种情况坑)
声明
var array名 [容量]元素类型
array名 :=[3]元素类型{元素1,元素2,元素3} var slice名 []元素类型
slice名 := make([]类型,容量) //建议这样声明
slice名 := []元素类型{元素1,元素2,元素3}
// array或者slice声明后,各元素并不为空,而是该元素类型的 *零 *值 //array声明时还可以让编译器自动导入元素容量
array名 := [10]int{5:199, 8:200} //多维array/slice
//由相同元素类型构成的array/slice 为元素构成的array结构 array名 := [3][2]int{{1,2},{3,5},{9,2}}
slice名 := [][]int{{1,2},{3,5},{9,2}} //元素赋值
a[index] = 值
array/slice容量属性len/cap
- len
- len()方法获取array/slice的元素个数
- cap
- cap()方法获取array/slice的最大值可存储元素个数
根据开始我们说的array和slice特性
array: len和cap值时相等的
slice:初始化时,len和cap值是相等的,当append操作达到当前cap临界点时,cap值会增大
此时,len与cap的值是不相等的
array/slice遍历
- 方法一
for index, value := rang a{
fmt.Println(index, value)
} - 方法二
for index := range a{
fmt.Println(a[index])
} - 方法三
//len()获取array元素数量
for i :=0; i<len(a); i++{
fmt.Println(a[i])
} - 多维遍历
b := [3][2]int{{1,2},{3,5},{9,2}}
for index, value := range b{
for i, v := range value{
fmt.Println(index, i. v)
}
} - 切片操作
a := [5]int{10, 20, 30, 40, 50} //取出前三个元素, 坐标分别是 0, 1, 2
b := a[0:3]
bb := a[:3] //取出第三个元素之后所有元素(包含第3个元素)
c := a[2:] //取出第2, 3, 4 三个元素
d := a[1:4]
s1 := []int{1, 2}
s2 := s1
fmt.Println(s1[0])
fmt.Println(s2[0])
s1[0] = 100
fmt.Println(s1[0])
fmt.Println(s2[0]) temp := []int{5, 6, 7, 8, 9, 10, 11, 12, 13, 14}
s1 = append(s1, temp...)
s1[0] = 1000
fmt.Println(s1[0])
fmt.Println(s2[0])
golang的array/slice的更多相关文章
- golang array, slice, string笔记
本来想写一篇关于golang io的笔记,但是在学习io之前必须了解array, slice, string概念,因此将在下篇写golang io. array: 数组的长度是该数组类型的一部分, ...
- golang之array
golang使用array表示固定大小的数组,使用slice表示动态数组. package main import "fmt" func main() { var a = [5]i ...
- golang笔记——array
1.定义一个 array 数组长度也是类型的一部分,比如长度为3的int数组与长度为5的int数组,并不是同一类型. package main import ( "strconv" ...
- JS之Array.slice()方法
1.Array.slice(startIndex,endIndex); 返回由原始数组从startIndex到endIndex-1的元素构成的新数组; startIndex:默认值0,如果startI ...
- javascript:Array.slice.call 到Array.prototype.slice.call
举个从对象到数组的例子: var obj={}; obj[1]=1; obj[2]=2; obj.length=2; var arr =Array.prototype.slice.call(obj); ...
- [js] Array.slice和类数组转数组
a.call(b) 相当于把a方法放到b的原型上(实例私有方法)执行 Array.slice的用途 https://juejin.im/post/5b20b8596fb9a01e8d6a47c0 用法 ...
- Array.slice(start,end)的用法
start在start>=0,假设start=0,表示从数组的第一个元素开始截取,start=2,表示从数组的第二个元素开始截取,依次类推. 在start<0时,start=-1表示从倒数 ...
- JS - Array.slice 与 Array.splice
1)Array.slice方法 1.1)接收两个参数: a:起始下标 b:结束下标 1.2)返回由a(包括)至b(不包括)的元素所组成的数组 ...
- golang中Array与Slice
在golang中有数组和Slice两种数据结构,Slice是基于数组的实现,是长度动态不固定的数据结构,本质上是一个对数组字序列的引用,提供了对数组的轻量级访问.那么在go的函数中以数组或Slice为 ...
随机推荐
- BZOJ5297 CQOI2018 社交网络 【矩阵树定理Matrix-Tree】
BZOJ5297 CQOI2018 社交网络 Description 当今社会,在社交网络上看朋友的消息已经成为许多人生活的一部分.通常,一个用户在社交网络上发布一条消息(例如微博.状态.Tweet等 ...
- Django(一):从socket到MVC
一.socket的http套路 web应用本质上是一个socket服务端,用户的浏览器是一个socket客户端.socket处在应用层与传输层之间,是操作系统中I/O系统的延伸部分(接口),负责系统进 ...
- kong 安装
1. yum 参考信息 https://bintray.com/kong/kong-community-edition-rpm $ sudo yum install epel-release $ su ...
- stm32f0系列在SWD模式下载时复位失败
用stm32f030K6T6做了个小玩意,仿真电路就直接把3.3V,SWDIO,SWCLK,GND引出来连接到j-link的这四个角上,SWDIO和SWCLK引脚既没有上拉也没有下拉. MCU ...
- GOF23设计模式之迭代器模式(iterator)
一.迭代器模式概述 提供一种可以遍历聚合对象的方式.又称为:游标(cursor)模式 结构: (1)聚合对象:存储数据 (2)迭代器:遍历数据 二.迭代器模式示例代码 定义:正向遍历迭代器和逆向遍历迭 ...
- MongoDB在windows平台分片集群部署
本文转载自:https://www.cnblogs.com/hx764208769/p/4260177.html 前言-为什么我要使用mongodb 最近我公司要开发一个日志系统,这个日志系统包括很多 ...
- python接口自动化19-requests-toolbelt处理multipart/form-data
requests-toolbelt 1.官方文档地址:requests-toolbelt官方文档 2.环境安装 pip install requests-toolbelt multipart/form ...
- 【学徒日记】Unity 动画调用事件
http://note.youdao.com/noteshare?id=a15f965fc57a0b25c87ee09388cf0f4a 具体内容看上面的链接. 1. 在脚本里写一个函数,它的参数只能 ...
- 安装Elastix-2.4版本
首先,下载Elastix地址:http://www.elastix.org,下载里面的2.4版本 第一步:选择安装,Enter 选择语言,默认就行 选择us,默认 选择全部 选择默认分区,点击OK 配 ...
- HTTP客户端之使用request方法向其他网站请求数据
在node中,可以很轻松的向任何网站发送请求并读取该网站的响应数据. var req=http.request(options,callback); options是一个字符串或者是对象.如果是字符串 ...