mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 01:21:38 +08:00
Update 07.5.md
This commit is contained in:
@@ -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。
|
||||||
|
|
||||||
@@ -54,4 +56,4 @@
|
|||||||
|
|
||||||
- [目录](directory.md)
|
- [目录](directory.md)
|
||||||
- 上一节:[切片重组](07.4.md)
|
- 上一节:[切片重组](07.4.md)
|
||||||
- 下一节:[字符串、数组和切片的应用](07.6.md)
|
- 下一节:[字符串、数组和切片的应用](07.6.md)
|
||||||
|
Reference in New Issue
Block a user