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

来源:5-3 Go语言-切片的更多操作方法

qq_慕圣411555

2019-04-04 16:20

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回答

  • qq_冥_6
    2019-04-13 15:29:00
    已采纳

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

    tom_0

    这个确实讲得很清楚。但谁说 GO 很简单的?真的很简单?

    2019-05-02 08:55:23

    共 2 条回复 >

Go语言第一课

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

107794 学习 · 148 问题

查看课程

相似问题