[GO]append的扩容

Posted baylorqu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[GO]append的扩容相关的知识,希望对你有一定的参考价值。

package main

import "fmt"

func main()  {
    s := make([]int, 0, 1)
    oldcap := cap(s)
    for i := 0; i < 20; i++{
        s = append(s, i)
        if newcap := cap(s); oldcap < newcap {
            fmt.Printf("oldcap %d ===> newcap %d
", oldcap, newcap)
            oldcap = newcap
        }
    }
}

它的执行结果为:

oldcap 1 ===> newcap 2
oldcap 2 ===> newcap 4
oldcap 4 ===> newcap 8
oldcap 8 ===> newcap 16
oldcap 16 ===> newcap 32

可以看得出来,当一个append执行达到了切片的容量,它会自动扩容为原来的两倍大小

以上是关于[GO]append的扩容的主要内容,如果未能解决你的问题,请参考以下文章

Go语言 使用append() 为切片动态添加元素

GO 智能合约cannot use transactionRecordId + strconv.Itoa(id) (type string) as type byte in append(示例代码(代

append() 在这个代码片段中是如何工作的?与特定变量混淆[重复]

Go切片实现

go语言基础语法-切片

go语言基础语法-切片