橡皮擦擦

Golang append函数

Golang

样例代码

package main

import (
    "fmt"
)

func main() {
    var s = make([]string, 10)
    s = append(s, "aaa")

    fmt.Printf("s[0]=[%s]\n", s[0])

    for i, v := range s {
        fmt.Printf("s[%d]=[%s]\n", i, v)
    }
}

执行结果

$ go build && ./main
s[0]=[]
s[0]=[]
s[1]=[]
s[2]=[]
s[3]=[]
s[4]=[]
s[5]=[]
s[6]=[]
s[7]=[]
s[8]=[]
s[9]=[]
s[10]=[aaa]

"aaa"怎么是第s[10]的元素呢,前面s[0]~s[9]都是空串。

原因append总是在当前slice的最后添加元素,当我们用 var s = make([]string, 10) 初始化s的时候,就已经为s创建了10个元素,每一个元素的值都是空串,调用append函数的时候会发现此时s已经有10个元素了,所有"aaa"会被添加进第11个元素。

作者:CodingCode
链接:https://www.jianshu.com/p/b09e06ab7005
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

点我评论
打赏本文
二维码


45

文章

6

分类