mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 03:34:15 +08:00
Update 07.5.md
This commit is contained in:
@@ -26,19 +26,21 @@
|
||||
|
||||
**注意**: append 在大多数情况下很好用,但是如果你想完全掌控整个追加过程,你可以实现一个这样的 AppendByte 方法:
|
||||
|
||||
func AppendByte(slice []byte, data ...byte[]) []byte {
|
||||
m := len(slice)
|
||||
n := m + len(data)
|
||||
if n > cap(slice) { // if necessary, reallocate
|
||||
// allocate doublke what's needed, for future growth.
|
||||
newSlice := make([]byte, (n+1)*2)
|
||||
copy(newSlice, slice)
|
||||
slice = newSlice
|
||||
}
|
||||
slice = slice[0:n]
|
||||
copy(slice[m:n], data)
|
||||
return slice
|
||||
```go
|
||||
func AppendByte(slice []byte, data ...byte) []byte {
|
||||
m := len(slice)
|
||||
n := m + len(data)
|
||||
if n > cap(slice) { // if necessary, reallocate
|
||||
// allocate doublke what's needed, for future growth.
|
||||
newSlice := make([]byte, (n+1)*2)
|
||||
copy(newSlice, slice)
|
||||
slice = newSlice
|
||||
}
|
||||
slice = slice[0:n]
|
||||
copy(slice[m:n], data)
|
||||
return slice
|
||||
}
|
||||
```
|
||||
|
||||
`func copy(dst, src []T) int` copy 方法将类型为 T 的 slice 从源地址 src 拷贝到目标地址 dst,覆盖 dst 的相关元素,并且返回拷贝的元素个数。源地址和目标地址可能会有重叠。拷贝个数是 src 和 dst 的长度最小值。如果 src 是字符串那么元素类型就是 byte。如果你还想继续使用 src,在拷贝技术后执行 src =dst。
|
||||
|
||||
@@ -54,4 +56,4 @@
|
||||
|
||||
- [目录](directory.md)
|
||||
- 上一节:[切片重组](07.4.md)
|
||||
- 下一节:[字符串、数组和切片的应用](07.6.md)
|
||||
- 下一节:[字符串、数组和切片的应用](07.6.md)
|
||||
|
Reference in New Issue
Block a user