Go语言 切片长度和容量

Posted shenwenlong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言 切片长度和容量相关的知识,希望对你有一定的参考价值。

package main

import "fmt"

func main() {
	s := []int{2, 3, 5, 7, 11, 13}
	printSlice(s)

	// Slice the slice to give it zero length.
	s = s[:0]
	printSlice(s)

	// Extend its length.
	fmt.Println(s[:5])
	s = s[:4]
	printSlice(s)

	// Drop its first two values.
	s = s[2:]
	printSlice(s)
}

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

  

输出

len=6 cap=6 [2 3 5 7 11 13]
len=0 cap=6 []
[2 3 5 7 11]
len=4 cap=6 [2 3 5 7]
len=2 cap=4 [5 7]

  

第一次重新赋值s的指向底层数组的0   第二次s还是指向0  第三次指向了2 

一切都以开头的那个指向的index 开始切片的

cap就是当前切片的0指向的位置开始到end

  

如果不理解可以看下图

技术分享图片

 

以上是关于Go语言 切片长度和容量的主要内容,如果未能解决你的问题,请参考以下文章

7Go语言基础之切片(slice)

你知道的Go切片扩容机制可能是错的

Go切片实现

Go语言专题:go语言切片

Go语言的切片

Go 语言的切片使用