golang字节数组拷贝BlockCopy函数实现

在C#中,Buffer.BlockCopy(Array, Int32, Array, Int32, Int32) 函数使用比较普遍,其含义:api

将指定数目的字节从起始于特定偏移量的源数组复制到起始于特定偏移量的目标数组。数组

参数 src Array 源缓冲区。 srcOffset Int32 src 中的字节偏移量,从零开始。 dst Array 目标缓冲区。 dstOffset Int32 dst 中的字节偏移量,从零开始。 count Int32 要复制的字节数。函数

go语言中实现以下:spa

func blockCopy(src []byte, srcOffset int, dst []byte, dstOffset, count int) (bool, error) {
    srcLen := len(src)
    if srcOffset > srcLen || count > srcLen || srcOffset+count > srcLen {
        return false, errors.New("源缓冲区 索引超出范围")
    }
    dstLen := len(dst)
    if dstOffset > dstLen || count > dstLen || dstOffset+count > dstLen {
        return false, errors.New("目标缓冲区 索引超出范围")
    }
    index := 0
    for i := srcOffset; i < srcOffset+count; i++ {
        dst[dstOffset+index] = src[srcOffset+index]
        index++
    }
    return true, nil
}
相关文章
相关标签/搜索