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
}
相關文章
相關標籤/搜索