以 s := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}为例
0. 建议:做slice截取时建议用两个参数,尤其是从底层数组进行切片操作时,因为这样在进行第一次append操作时,会给切片重新分配空间,这样减少切片对数组的影响。
1. 结论:s = s[low : high : max] 切片的三个参数的切片截取的意义为 low为截取的起始下标(含), high为窃取的结束下标(不含high),max为切片保留的原切片的最大下标(不含max);即新切片从老切片的low下标元素开始,len = high - low, cap = max - low;high 和 max一旦超出在老切片中越界,就会发生runtime err,slice out of range。另外如果省略第三个参数的时候,第三个参数默认和第二个参数相同,即len = cap。
2. 代码
package main import "fmt" func main(){ s := []int {0, 1, 2, 3, 4, 5, 6,7, 8, 9} s = s[1:9:10] fmt.Println(s) fmt.Println(len(s)) fmt.Println(cap(s)) }
3. 运行结果
修改max值,越界错误截图
操作 |
含义 |
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) |
到此这篇关于golang 切片截取参数方法详解的文章就介绍到这了,更多相关golang 切片截取参数内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!
问题内容: 我正在使用反射包来获取任意数组的类型,但是 如何从数组中获取类型?我知道如何从价值中获取价值。 http://play.golang.org/p/sNw8aL0a5f 问题答案: 更改: 至: 顺便说一句,不是一个数组而是一个整数 切片 。
本文向大家介绍Python中的字符串切片(截取字符串)的详解,包括了Python中的字符串切片(截取字符串)的详解的使用技巧和注意事项,需要的朋友参考一下 字符串索引示意图 字符串切片也就是截取字符串,取子串 Python中字符串切片方法 字符串[开始索引:结束索引:步长] 切取字符串为开始索引到结束索引-1内的字符串 步长不指定时步长为1 字符串[开始索引:结束索引] 练习样例 截取2-末尾的字
本文向大家介绍golang修改结构体中的切片值方法,包括了golang修改结构体中的切片值方法的使用技巧和注意事项,需要的朋友参考一下 golang修改结构体中的切片值,直接传结构体地址就可以 到此这篇关于golang修改结构体中的切片值方法的文章就介绍到这了,更多相关golang 修改结构体切片值内容请搜索呐喊教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持呐喊教程!
本文向大家介绍$.ajax()方法参数详解,包括了$.ajax()方法参数详解的使用技巧和注意事项,需要的朋友参考一下 会灵活的运用ajax的方法,非常重要,本文先给大家介绍ajax的几种方法,然后通过实例给大家分析详解,具体内容请看下文吧 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址。 2.type: 要求为String类型的参数,请求方式(post或get)默
问题内容: 我有以下代码: 但是我想将一个指向字节切片的指针传递给另一个函数,并在那里切片,所以类似: 它给我一个错误,我不能在函数参数中使用type 作为类型,并且不能对type进行切片。怎么了?默认情况下切片不是通过引用传递的吗?我试图在没有指针的情况下执行此操作,但是它不起作用- 正在复制数组。我怎样才能做到这一点? 问题答案: 该错误来自您尚未发布的拼写错误(您尝试传递一个切片而不是指向的
本文向大家介绍SQL Server中对数据截取替换的方法详解,包括了SQL Server中对数据截取替换的方法详解的使用技巧和注意事项,需要的朋友参考一下 REPLACE(要修改字段名,‘被替换的特定字符',‘替换的字符') 表结构和插入数据 第一次查询结果 执行数据替换的函数 UPDATE TestTable SET UserName=(REPLACE(UserName,'FFFF','AA')