博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go语言基础之切片的创建和截取
阅读量:5089 次
发布时间:2019-06-13

本文共 1723 字,大约阅读时间需要 5 分钟。

1、切片的创建

示例:

package main //必须有个main包import "fmt"func main() {	//切片和数组的区别	//数组[]里面的长度时固定的一个常量, 数组不能修改长度, len和cap永远都是5	a := [5]int{}	fmt.Printf("len = %d, cap = %d\n", len(a), cap(a))	//切片, []里面为空,或者为...,切片的长度或容量可以不固定	s := []int{}	fmt.Printf("1: len = %d, cap = %d\n", len(s), cap(s))	s = append(s, 11) //给切片末尾追加一个成员	fmt.Printf("append: len = %d, cap = %d\n", len(s), cap(s))}

执行结果:

len = 5, cap = 51: len = 0, cap = 0append: len = 1, cap = 1

  

2、切片的截取

切片语法:

操作

含义

s[n]

切片s中索引位置为n的项

s[:]

从切片s的索引位置0到len(s)-1处所获得的切片

s[low:]

从切片s的索引位置low到len(s)-1处所获得的切片

s[:high]

从切片s的索引位置0到high处所获得的切片,len=high

s[low:high]

从切片s的索引位置low到high处所获得的切片,len=high-low

s[low:high:max]

从切片s的索引位置low到high处所获得的切片,len=high-low,cap=max-low

len(s)

切片s的长度,总是<=cap(s)

cap(s)

切片s的容量,总是>=len(s)

 

示例:

package main //必须有个main包
 
import "fmt"
 
func main() {
array := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
//[low:high:max] 取下标从low开始的元素, len=high-low, cap=max-low
s1 := array[:] //[0:len(array):len(array)] 不指定容量和长度一样
fmt.Println("s1 = ", s1)
fmt.Printf("len = %d, cap = %d\n", len(s1), cap(s1))
 
//操作某个元素,和数组操作方式一样
data := array[1]
fmt.Println("data = ", data)
 
s2 := array[3:6:7] //a[3], a[4], a[5]   len = 6-3=3    cap = 7-3=4
fmt.Println("s2 = ", s2)
fmt.Printf("len = %d, cap = %d\n", len(s2), cap(s2))
 
s3 := array[:6] //从0开始,去6个元素,容量也是6, 常用
fmt.Println("s3 = ", s3)
fmt.Printf("len = %d, cap = %d\n", len(s3), cap(s3))
 
s4 := array[3:] //从下标为3开始,到结尾
fmt.Println("s4 = ", s4)  //[3 4 5 6 7 8 9]
fmt.Printf("len = %d, cap = %d\n", len(s4), cap(s4))
}

执行结果:

s1 = [0 1 2 3 4 5 6 7 8 9]

len = 10, cap = 10

data = 1

s2 = [3 4 5]

len = 3, cap = 4

s3 = [0 1 2 3 4 5]

len = 6, cap = 10

s4 = [3 4 5 6 7 8 9]

len = 7, cap = 7

  

 

转载于:https://www.cnblogs.com/nulige/p/10239433.html

你可能感兴趣的文章
Scrapy实战篇(三)之爬取豆瓣电影短评
查看>>
HDU 5510 Bazinga KMP
查看>>
[13年迁移]Firefox下margin-top问题
查看>>
Zookeeper常用命令 (转)
查看>>
Java程序IP v6与IP v4的设置
查看>>
RUP(Rational Unified Process),统一软件开发过程
查看>>
数据库链路创建方法
查看>>
Enterprise Library - Data Access Application Block 6.0.1304
查看>>
重构代码 —— 函数即变量(Replace temp with Query)
查看>>
Bootstrap栅格学习
查看>>
程序员的数学
查看>>
聚合与组合
查看>>
jQuery如何获得select选中的值?input单选radio选中的值
查看>>
设计模式 之 享元模式
查看>>
如何理解汉诺塔
查看>>
洛谷 P2089 烤鸡【DFS递归/10重枚举】
查看>>
15 FFT及其框图实现
查看>>
Linux基本操作
查看>>
osg ifc ifccolumn
查看>>
C++ STL partial_sort
查看>>