加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
7.5-slice.go 879 Bytes
一键复制 编辑 原始数据 按行查看 历史
Letotn 提交于 2022-12-15 23:36 . update 7.4-7.6
package main
import "fmt"
// 给定切片 sl,将一个 []byte 数组追加到 sl 后面。写一个函数 Append(slice, data []byte) []byte,该函数在 sl 不能存储更多数据的时候自动扩容。
func Append(sl, data []byte) (res []byte) {
len_sl := len(sl)
len_data := len(data)
len_max := len_sl + len_data
// 判断sl原容量, 小于目标时自动扩容
if cap(sl) < len_max {
res = make([]byte, len_max)
copy(res[0:len_sl], sl)
} else {
res = sl[:len_max]
}
copy(res[len_sl:], data)
return
}
func main() {
sli := make([]byte, 3, 6)
copy(sli, []byte{'a', 'b', 'c'})
slice := Append(sli, []byte{'e', 'd'})
// 此时原slice被修改, 未扩容
fmt.Println("sli: ", sli[:5])
fmt.Println("sli after append: ", slice)
slice2 := Append(slice, []byte{'g', 'h'})
fmt.Println("sli: ", sli[:6])
fmt.Println("slice after append: ", slice2)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化