代码拉取完成,页面将自动刷新
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)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。