golang字節數組拷貝BlockCopy函數實現


在C#中,Buffer.BlockCopy(Array, Int32, Array, Int32, Int32) 函數使用比較廣泛,其含義:

將指定數目的字節從起始於特定偏移量的源數組復制到起始於特定偏移量的目標數組。

參數 src Array 源緩沖區。 srcOffset Int32 src 中的字節偏移量,從零開始。 dst Array 目標緩沖區。 dstOffset Int32 dst 中的字節偏移量,從零開始。 count Int32 要復制的字節數。

go語言中實現如下:

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
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM