这篇文章主要讲解了“如何实现切片输”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现切片输”吧!
首先,s[low : high : max]
构造的切片内容和s[low : high]
相同,只是在容量上有差别,这一点后面会介绍。另外这种格式只适用于数组和切片不能用于字符串。这一点请大家注意!
其次,s[low : high : max]
和s[low : high]
容量不同。s[low : high]
生成切片的容量为cap(s) - low
, 而s[low : high : max]
的容量为max - low
。
最后,s[low : high : max]
中索引的范围为0 <= low <= high <= max <= cap(s)
。
现在我们回顾一下前一篇文章中的面试题。
arr := []int{1, 2, 3, 4, 5, 6, 7, 8}
s1 := arr[2:5:7] // s1的内容为[3,4,5]且容量为5
s1 = append(s1, 999) // s1内容为[3,4,5,999]
fmt.Println(s1, arr) // s1切片容量为5且和arr共用底层数组,故无需扩容,所以arr对应的值也发生变化
到这儿相信各位读者以后再遇见类似的面试题就可以随便拿捏了。下面继续来看一下今天的正餐。
s1 := []byte{1}
s1 = append(s1, 2)
s2 := []int{1, 2}
s2 = append(s2, 3)
s2 = append(s2, 4)
s2 = append(s2, 5)
s3 := []int{1, 2}
s3 = append(s3, 3, 4, 5)
fmt.Println(cap(s1), cap(s2), cap(s3))
感谢各位的阅读,以上就是“如何实现切片输”的内容了,经过本文的学习后,相信大家对如何实现切片输这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。