非礼什么意思| 什么叫稽留流产| 代入感是什么意思| 什么蔬菜降血压效果最好| 翻墙是什么意思| 秦二世叫什么名字| 金可以组什么词| 不见棺材不落泪是什么生肖| 什么是梨形身材| 菊花用什么繁殖| 蜜糖有什么功效和作用| 加拿大货币叫什么| 香草是什么意思| 鸡粉是什么| 乳腺增生看什么科室| 中耳炎吃什么药最有效| 什么是沉没成本| 张靓颖什么星座| 血小板低吃什么药| 脑梗有什么特效药| 胃酸吃什么药好| 什么时候有胎心胎芽| 锴字五行属什么| zara是什么牌子| 血压低是什么症状| 女性喝什么茶比较好| 驿站什么意思| 煲什么汤去湿气最好| pa是什么元素| 寿辰是什么意思| 手上蜕皮是什么原因| 五月17号是什么星座| 胃酸过多吃点什么食物比较好| 巨细胞病毒抗体阳性是什么意思| 什么什么言什么| 整夜失眠是什么病| 严密是什么意思| 家里养什么宠物好| 七星瓢虫吃什么食物| 低压高什么原因导致的| 小孩睡觉出汗多是什么原因| 心脏早搏什么症状| 官方什么意思| 梦见马是什么预兆| 肚子硬是什么原因| 2007是什么年| 不好意思是什么意思| 网球肘用什么药最有效| 深海鱼油有什么作用| 发际线是什么| 长期喝奶粉有什么好处| 后脑勺发热是什么原因| 吃什么补血快效果好| 扛幡是什么意思| 气血不足吃什么食物好| 碳酸钠是什么| 自字五行属什么| 肾外肾盂是什么意思| 乳酸菌是什么菌| 天秤座是什么性格| 阴蒂痛是什么原因| 20点是什么时辰| 有什么意思| 九眼天珠适合什么人戴| 韩墨池是什么电视剧| 老年人出虚汗是什么原因引起的| 长目飞耳是什么动物| herb是什么意思| 供奉财神爷有什么讲究| 有点咳嗽吃什么药| 水清则无鱼什么意思| 手不什么| 总打嗝吃什么药| 胰腺炎能吃什么| 送奶奶什么礼物好| 埋线是什么| 寒号鸟是什么动物| 解脲脲原体阳性吃什么药| 胆囊粗糙是什么意思| jvc是什么牌子| 火眼金睛是什么生肖| 人又不人鬼不鬼是什么生肖| 小脑梗塞会出现什么症状| 协会是什么意思| 榄仁是什么| 水清则无鱼什么意思| 心脏不舒服做什么检查| 电饭煲煮粥为什么会溢出来| 严重失眠吃什么药最好| 黄精为什么要九蒸九晒| 总是拉稀是什么原因| 87年属于什么生肖| 乳酸脱氢酶高是什么原因| 头发一把一把的掉是什么原因| 易烊千玺原名叫什么| 方得始终什么意思| 丫丫的老公叫什么| 平均红细胞体积偏高是什么原因| 白砂糖是什么糖| 蛋白粉什么时候喝效果最好| q波异常是什么意思| 香瓜不能和什么一起吃| 阴虚火旺有什么表现症状| 属龙和什么属相相冲| 看病人送什么花合适| 吃什么维生素对眼睛好| 夏天适合吃什么水果| 低血糖吃什么食物| 部队班长是什么军衔| 梦见自己离婚是什么预兆| 越南三宝是什么| 什么人不能吃鹅蛋| 脾虚是什么原因引起的| rbc红细胞偏高是什么意思| tin是什么| 什么叫中出| 红豆不能和什么一起吃| 珠是什么生肖| 一叶知秋是什么生肖| 柠檬泡水喝有什么作用| 陈皮和什么泡水喝最好| 什么时候教师节| 孕妇吃红薯对胎儿有什么好处| 99足银是什么意思| 什么才叫幸福| 舌苔发紫是什么原因| 倒拔垂杨柳是什么意思| 一个虫一个尧念什么| 手指甲空了是什么原因| 禄神是什么意思| 嗤笑什么意思| 糖尿病人吃什么水果好| 回声欠均匀是什么意思| 男朋友发烧该说些什么| 女人吃榴莲有什么好处| 眼睛模糊用什么眼药水| 虎虎生风是什么意思| 冰菜是什么菜| 指责的意思是什么| 黄墙绿地的作用是什么| 五月初九是什么星座| 白细胞酯酶阳性什么意思| 夜间睡觉出汗是什么原因| 脸上发麻是什么原因| 阴囊潮湿是什么原因| 家里飞蛾多是什么原因| 巾帼不让须眉是什么意思| 什么是天赋| 急性胃炎吃什么药好| 蜜蜂蜇人后为什么会死去| 孕酮低会有什么影响| 得瑟什么意思| 貔貅和麒麟有什么区别| 锡纸什么牌子的好| 倪什么意思| 公历年份是什么意思| 心烦焦虑吃什么药| 有什么中药可以壮阳| 愿闻其详是什么意思| 后背疼是什么病的前兆| 阿尔卑斯是什么意思| 肤色黑穿什么颜色| 什么季节| 姨妈期不能吃什么| 麦麸是什么意思| 话糙理不糙是什么意思| 松针泡水喝有什么功效| 螃蟹不能和什么食物一起吃| 为什么怀孕会孕酮低| 葛粉吃了有什么好处| 电饭锅内胆什么材质好| 精神洁癖是什么| 痛风吃什么中药最有效| 什么是伟哥| 什么牌子的冰箱最好| 剪发虫是什么| 空调外机不出水是什么原因| 潜意识是什么意思| 每天吃一个西红柿有什么好处| 西双版纳有什么好玩的| 农历6月20日是什么星座| 月亮为什么会发光| 夜莺是什么鸟| 看血管挂什么科| 同房出血是什么原因造成的| 巡查是什么意思| 牙龈溃疡吃什么药| 缢死是什么意思| 胃酸是什么原因造成的| 鲻鱼是什么鱼| 大便蛋花状是什么原因| 尿蛋白阴性是什么意思| 什么是负数| 王属什么五行| 定力是什么意思| 今夕何夕什么意思| 地图舌吃什么药| 退烧药吃什么| 疮疡是什么意思| 吃鹅蛋有什么好处和坏处| 加仓是什么意思| c反应蛋白偏高说明什么| 什么照镜子里外不是人| 纵隔淋巴结转移是什么意思| 黄菡和黄澜什么关系| 藏族信仰什么教| 两个gg是什么牌子的包包| 身体皮肤痒是什么原因| 办护照需要什么材料| 过的第五笔是什么| 干是什么意思| 小娘皮什么意思| 孔子是什么家| 香港有什么好玩的| 眉目传情什么意思| npv是什么病毒| 偏财是什么意思| 一什么水井| 鸭子是什么职业| 心理卫生科看什么病的| 肯定是什么意思| 双肾囊肿什么意思| 梦见红薯是什么意思| cpc是什么意思| 柜姐是什么意思| 喝黄芪水有什么副作用| 弓山文念什么| 香蕉为什么是弯的| 淼念什么| 南浦大桥什么时候建成| 吃饱了胃胀是什么原因| 经常吃紧急避孕药有什么危害| 宫腔内稍高回声是什么意思| 特别怕热爱出汗是什么原因| csw是什么意思| 6月5号是什么星座| 肺部纤维灶什么意思| 风吹动窗吹动夜声响是什么歌| 手抖是什么病| 泥淖是什么意思| 什么样的女人最旺夫| 吃什么尿酸降得快| vd是什么意思| 为什么会铅中毒| 大祭司是什么意思| 蒂是什么意思| 0.5是什么意思| 里字五行属什么| 什么水果通便效果最好| 凤是什么意思| 犹太人是什么意思| 尿有味是什么原因| 什么能减肚子上的脂肪| 腺样体肥大是什么症状| 95511是什么号码| 肺阴不足的症状是什么| 什么是属性| 老人吃什么水果好| 狂风暴雨是什么生肖| 女性尿频吃什么药| 牙齿出血是什么病表现出来的症状| 白虎女是什么意思| cook什么意思| 丹参是什么样子| 百度
Go language tutorial manual / Go 语言切片(Slice)

白俄罗斯中联重科工业园奠基 杜家毫出席并致辞

百度 文丨特约评论员斯远虽然我行动不便,说话需要机器的帮助,但是,我的思想是自由的。

Go 语言切片是对数组的抽象。

Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。


定义切片

你可以声明一个未指定大小的数组来定义切片:

var identifier []type

切片不需要说明长度。

或使用make()函数来创建切片:

var slice1 []type = make([]type, len)

也可以简写为

slice1 := make([]type, len)

也可以指定容量,其中capacity为可选参数。

make([]T, length, capacity)

这里 len 是数组的长度并且也是切片的初始长度。

切片初始化

s :=[] int {1,2,3 }

直接初始化切片,[]表示是切片类型,{1,2,3}初始化值依次是1,2,3.其cap=len=3

s := arr[:]

初始化切片s,是数组arr的引用

s := arr[startIndex:endIndex]

将arr中从下标startIndex到endIndex-1 下的元素创建为一个新的切片

s := arr[startIndex:]

缺省endIndex时将表示一直到arr的最后一个元素

s := arr[:endIndex]

缺省startIndex时将表示从arr的第一个元素开始

s1 := s[startIndex:endIndex]

通过切片s初始化切片s1

s :=make([]int,len,cap)

通过内置函数make()初始化切片s,[]int 标识为其元素类型为int的切片


len() 和 cap() 函数

切片是可索引的,并且可以由 len() 方法获取长度。

切片提供了计算容量的方法 cap() 可以测量切片最长可以达到多少。

以下为具体实例:

package main

import "fmt"

func main() {
   var numbers = make([]int,3,5)

   printSlice(numbers)
}

func printSlice(x []int){
   fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
}

以上实例运行输出结果为:

len=3 cap=5 slice=[0 0 0]

空(nil)切片

一个切片在未初始化之前默认为 nil,长度为 0,实例如下:

package main

import "fmt"

func main() {
   var numbers []int

   printSlice(numbers)

   if(numbers == nil){
      fmt.Printf("切片是空的")
   }
}

func printSlice(x []int){
   fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
}

以上实例运行输出结果为:

len=0 cap=0 slice=[]
切片是空的

切片截取

可以通过设置下限及上限来设置截取切片 [lower-bound:upper-bound],实例如下:

package main

import "fmt"

func main() {
   /* 创建切片 */
   numbers := []int{0,1,2,3,4,5,6,7,8}   
   printSlice(numbers)

   /* 打印原始切片 */
   fmt.Println("numbers ==", numbers)

   /* 打印子切片从索引1(包含) 到索引4(不包含)*/
   fmt.Println("numbers[1:4] ==", numbers[1:4])

   /* 默认下限为 0*/
   fmt.Println("numbers[:3] ==", numbers[:3])

   /* 默认上限为 len(s)*/
   fmt.Println("numbers[4:] ==", numbers[4:])

   numbers1 := make([]int,0,5)
   printSlice(numbers1)

   /* 打印子切片从索引  0(包含) 到索引 2(不包含) */
   number2 := numbers[:2]
   printSlice(number2)

   /* 打印子切片从索引 2(包含) 到索引 5(不包含) */
   number3 := numbers[2:5]
   printSlice(number3)

}

func printSlice(x []int){
   fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
}

执行以上代码输出结果为:

len=9 cap=9 slice=[0 1 2 3 4 5 6 7 8]
numbers == [0 1 2 3 4 5 6 7 8]
numbers[1:4] == [1 2 3]
numbers[:3] == [0 1 2]
numbers[4:] == [4 5 6 7 8]
len=0 cap=5 slice=[]
len=2 cap=9 slice=[0 1]
len=3 cap=7 slice=[2 3 4]

append() 和 copy() 函数

如果想增加切片的容量,我们必须创建一个新的更大的切片并把原分片的内容都拷贝过来。

下面的代码描述了从拷贝切片的 copy 方法和向切片追加新元素的 append 方法。

package main

import "fmt"

func main() {
   var numbers []int
   printSlice(numbers)

   /* 允许追加空切片 */
   numbers = append(numbers, 0)
   printSlice(numbers)

   /* 向切片添加一个元素 */
   numbers = append(numbers, 1)
   printSlice(numbers)

   /* 同时添加多个元素 */
   numbers = append(numbers, 2,3,4)
   printSlice(numbers)

   /* 创建切片 numbers1 是之前切片的两倍容量*/
   numbers1 := make([]int, len(numbers), (cap(numbers))*2)

   /* 拷贝 numbers 的内容到 numbers1 */
   copy(numbers1,numbers)
   printSlice(numbers1)   
}

func printSlice(x []int){
   fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
}

以上代码执行输出结果为:

len=0 cap=0 slice=[]
len=1 cap=2 slice=[0]
len=2 cap=2 slice=[0 1]
len=5 cap=8 slice=[0 1 2 3 4]
len=5 cap=16 slice=[0 1 2 3 4]
春天都有什么花开 绦是什么意思 旺是什么意思 宫颈炎用什么药物治疗比较好 后背发凉是什么原因
体检吃早餐有什么影响 洗内裤用什么洗比较好 自食恶果是什么意思 为什么崴脚了休息一晚脚更疼 脱头发严重是什么原因引起的
卖萌什么意思 毛细血管扩张是什么原因引起的 又什么又什么的什么 1450是什么意思 什么生火
s属性什么意思 印堂发亮预兆着什么 as材质是什么材料 结扎后需要注意什么 蛋白粉什么时候喝效果最好
前列腺回声欠均匀什么意思hcv8jop1ns1r.cn 感冒后咳嗽吃什么药hcv8jop9ns3r.cn 马华念什么字hcv9jop6ns7r.cn 鹦鹉能吃什么水果hcv9jop5ns3r.cn 翅膀最长的鸟是什么鸟xjhesheng.com
玉树临风是什么意思hcv8jop2ns7r.cn 冰箱什么牌子好hcv8jop4ns8r.cn 88年的属什么hcv8jop6ns4r.cn 痛风性关节炎吃什么药hcv8jop9ns6r.cn 痛风吃什么水果hcv9jop3ns6r.cn
名声大噪是什么意思hcv7jop6ns5r.cn 百日咳是什么意思beikeqingting.com 检查肝脏挂什么科hcv9jop1ns3r.cn 后背痛是什么病的先兆hcv9jop3ns9r.cn 疲软是什么意思hcv9jop1ns4r.cn
脚烧是什么原因hcv8jop0ns4r.cn 燕子吃什么食物hcv9jop3ns9r.cn 时迁是什么意思hcv9jop7ns5r.cn 一什么而入hcv9jop4ns5r.cn 警察两杠三星是什么级别hcv8jop7ns3r.cn
百度