Update 07.5.md

This commit is contained in:
无闻
2014-11-21 07:24:57 -05:00
parent a8d6519df0
commit 6bc1295d23

View File

@@ -26,19 +26,21 @@
**注意** append 在大多数情况下很好用,但是如果你想完全掌控整个追加过程,你可以实现一个这样的 AppendByte 方法: **注意** append 在大多数情况下很好用,但是如果你想完全掌控整个追加过程,你可以实现一个这样的 AppendByte 方法:
func AppendByte(slice []byte, data ...byte[]) []byte { ```go
m := len(slice) func AppendByte(slice []byte, data ...byte) []byte {
n := m + len(data) m := len(slice)
if n > cap(slice) { // if necessary, reallocate n := m + len(data)
// allocate doublke what's needed, for future growth. if n > cap(slice) { // if necessary, reallocate
newSlice := make([]byte, (n+1)*2) // allocate doublke what's needed, for future growth.
copy(newSlice, slice) newSlice := make([]byte, (n+1)*2)
slice = newSlice copy(newSlice, slice)
} slice = newSlice
slice = slice[0:n]
copy(slice[m:n], data)
return slice
} }
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。 `func copy(dst, src []T) int` copy 方法将类型为 T 的 slice 从源地址 src 拷贝到目标地址 dst覆盖 dst 的相关元素,并且返回拷贝的元素个数。源地址和目标地址可能会有重叠。拷贝个数是 src 和 dst 的长度最小值。如果 src 是字符串那么元素类型就是 byte。如果你还想继续使用 src在拷贝技术后执行 src =dst。