切片(s)
len(s) 获取长度
cap(s) 获取容量
Append(s, d)实现时比较:len(s)+len(d) > cap(s)
package main
import (
"fmt"
)
func main() {
mySlice := make([]byte, 0, 0)
data := []byte{1, 2, 3, 4, 5}
mySlice = Append(mySlice, data)
fmt.Printf("slice: %v\n", mySlice)
//output: 'slice: [1 2 3 4 5]'
}
func Append(slice []byte, data []byte) []byte {
sliLen := len(slice)
needLen := len(slice) + len(data)
if needLen > cap(slice) {
//创建长度足够的新切片
newSlice := make([]byte, needLen, needLen)
//将数据复制到新的切片中
copy(newSlice, slice)
slice = newSlice
}
//重置切片长度---切片长度可能小于容量
//若没有该步骤,若slice的长度小于容量时可能越界导致崩溃: 'panic: runtime error: index out of range'
slice = slice[0:needLen]
for i, c := range data {
slice[sliLen+i] = c
}
return slice
}