为了账号安全,请及时绑定邮箱和手机立即绑定

为什么同时append3个值后,cap会变成6呢? len = 5,cap = 6,slice = [0 1 2 3 4]

package main

import "fmt"

func main(){
   var n []int
   printslice(n)

   n = append(n,0)
   printslice(n)

   n = append(n,1)
   printslice(n)

  
    n = append(n,2,3,4)
      printslice(n)

   n1 := make([]int,len(n),(cap(n))*2)
   copy(n1,n)
   printslice(n1)

}

func printslice(x []int){
   fmt.Printf("len = %d,cap = %d,slice = %d\n",len(x),cap(x),x)
   
   len = 0,cap = 0,slice = []
   len = 1,cap = 1,slice = [0]
   len = 2,cap = 2,slice = [0 1]
   len = 5,cap = 6,slice = [0 1 2 3 4]
   len = 5,cap = 12,slice = [0 1 2 3 4]


正在回答

1 回答

可以看下这篇文章, 有详细解析 https://www.cppentry.com/bencandy.php?fid=78&aid=216871&page=1

0 回复 有任何疑惑可以回复我~
#1

qq_慕圣411555 提问者

谢谢~~
2019-04-20 回复 有任何疑惑可以回复我~
#2

tom_0

这个确实讲得很清楚。但谁说 GO 很简单的?真的很简单?
2019-05-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Go语言第一课
  • 参与学习       107793    人
  • 解答问题       148    个

Go语言入门教程,编程之必备知识扩散,打好Go语言编程基础

进入课程

为什么同时append3个值后,cap会变成6呢? len = 5,cap = 6,slice = [0 1 2 3 4]

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信