开发者社区> 问答> 正文

go程序中len 与cap的区别,搞不懂了

package main

import "fmt"

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

	s = s[:0]
	printSlice(s)


	s = s[:4]
	printSlice(s)


	s = s[2:]
	printSlice(s)
}

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

运行结果

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

展开
收起
水果黄瓜 2021-10-24 09:07:55 1099 0
1 条回答
写回答
取消 提交回答
  • len 长度是当前元素个数 cap 长度是底层元素个数

    s := []int{2, 3, 5, 7, 11, 13} printSlice(s) len: 6 cap:6 正确

    s = s[:0] len: 0 cap: 6 目前就只有0个元素,底层数组还是6个 printSlice(s)

    s = s[:4] printSlice(s) len: 4 cap:6 目前是4个元素,底层还是6个

    s = s[2:] printSlice(s) len: 2 cap: 4 目前是2个元素,底层元素是从第一个元素往后数的,目前是4

    2021-10-25 22:04:01
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Go语言路上踩过的坑 立即下载
gohbase :HBase go客户端 立即下载
Go构建日请求千亿级微服务实践 立即下载