最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go語言中切片與內(nèi)存復制 memcpy 的實現(xiàn)操作

 更新時間:2021年04月26日 14:14:23   作者:許野平  
這篇文章主要介紹了go語言中切片與內(nèi)存復制 memcpy 的實現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

Go 語言原則上不支持內(nèi)存的直接操作訪問,但是提供了切片功能。

最初我以為切片就是動態(tài)數(shù)組,實際程序設(shè)計過程中發(fā)現(xiàn),切片是提供數(shù)組一個內(nèi)存片段的一個合法的手段,利用切片功能,實際上我們可以自由訪問數(shù)組的任何一個片段,因而可以借助 copy 函數(shù),實現(xiàn)內(nèi)存復制。

不同類型之間的數(shù)據(jù)復制,可以借助 unsafe 取出變量地址,類型轉(zhuǎn)換為數(shù)組后,利用數(shù)組切片,實現(xiàn)內(nèi)存復制。

不羅嗦了,示例代碼如下:

package main
import (
    "fmt"
    "unsafe"
)
func main() {
    //數(shù)組之間的數(shù)據(jù)復制
    var a = [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    var b = [10]int{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}
    copy(a[5:8], b[0:])
    fmt.Println(a, b)
    //不同數(shù)據(jù)類型之間的復制
    var c uint32 = 0x04030201
    var d [4]byte
    p := unsafe.Pointer(&c)
    q := (*[4]byte)(p)
    copy(d[0:], (*q)[0:])
    fmt.Println(d)
}

運行結(jié)果:

[0 1 2 3 4 -1 -1 -1 8 9] [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1]

[1 2 3 4]

補充:go語言之切片復制與追加

看代碼吧~

package main
import (
 "fmt"
)
func main() {
 // copy示例
 // 創(chuàng)建一個新的更大的切片并把原分片的內(nèi)容都拷貝過來
 sl_from := []int{1, 2, 3}
 sl_to := make([]int, 10)
 n := copy(sl_to, sl_from)
 fmt.Println("num:", n, "items", sl_to)
 // append追加元素
 // append 方法將0個或多個具有相同類型 s 的元素追加到切片后面并且返回新的切片
 // 追加的元素必須和原切片的元素同類型
 // 如果 s 的容量不足以存儲新增元素,append 會分配新的切片來保證已有切片元素和新增元素的存儲
 sl_a := []int{1, 2, 3}
 sl_a = append(sl_a, 4, 5, 6)
 fmt.Println(sl_a)
 // append 方法追加一個切片
 var sl_b []int
 sl_c := []int{1, 2, 3}
 sl_b = append(sl_b, sl_c...)
 fmt.Println(sl_b)
 // 將一個元素快速轉(zhuǎn)為對應切片類型
 x := 5
 Test([]int{x})
}
func Test(x []int)  {
 fmt.Println(x)
}

運行結(jié)果:

num: 3 items [1 2 3 0 0 0 0 0 0 0]

[1 2 3 4 5 6]

[1 2 3]

[5]

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • 詳解Golang中鏈表的創(chuàng)建和讀取

    詳解Golang中鏈表的創(chuàng)建和讀取

    這篇文章主要為大家詳細介紹了Golang中鏈表的創(chuàng)建和讀取的相關(guān)知識,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起了解下
    2023-12-12
  • Golang實現(xiàn)讀取excel文件并轉(zhuǎn)換為JSON格式

    Golang實現(xiàn)讀取excel文件并轉(zhuǎn)換為JSON格式

    本文介紹了如何使用Golang讀取Excel文件并將其轉(zhuǎn)換為JSON格式,通過安裝excelize依賴和創(chuàng)建readExcelToJSON方法,可以實現(xiàn)這一功能,如果需要轉(zhuǎn)換數(shù)據(jù)類型,可以修改相應的代碼,需要的朋友可以參考下
    2025-03-03
  • go語言template用法實例

    go語言template用法實例

    這篇文章主要介紹了go語言template用法,實例分析了template的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • GO語言實現(xiàn)日志切割的示例詳解

    GO語言實現(xiàn)日志切割的示例詳解

    日志記錄對程序排查問題比較關(guān)鍵,所以本文將選擇Logrus和lumberjack兩個庫進行日志切割以及記錄調(diào)用源,感興趣的小伙伴可以了解一下
    2023-07-07
  • Go并發(fā)編程中的錯誤恢復機制與代碼持續(xù)執(zhí)行實例探索

    Go并發(fā)編程中的錯誤恢復機制與代碼持續(xù)執(zhí)行實例探索

    這篇文章主要為大家介紹了Go并發(fā)編程中的錯誤恢復機制與代碼持續(xù)執(zhí)行實例探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Golang實現(xiàn)不被復制的結(jié)構(gòu)體的方法

    Golang實現(xiàn)不被復制的結(jié)構(gòu)體的方法

    sync包中的許多結(jié)構(gòu)都是不允許拷貝的,因為它們自身存儲了一些狀態(tài)(比如等待者的數(shù)量),如果你嘗試復制這些結(jié)構(gòu)體,就會在你的?IDE中看到警告,那這是怎么實現(xiàn)的呢,下文就來和大家詳細講講
    2023-03-03
  • go開發(fā)中引用靜態(tài)庫.a文件的方法

    go開發(fā)中引用靜態(tài)庫.a文件的方法

    這篇文章主要介紹了go開發(fā)中引用靜態(tài)庫.a文件的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • 基于Go語言實現(xiàn)一個壓測工具

    基于Go語言實現(xiàn)一個壓測工具

    這篇文章主要為大家詳細介紹了基于Go語言實現(xiàn)一個簡單的壓測工具,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-01-01
  • goland把go項目打包進docker鏡像的全過程記錄

    goland把go項目打包進docker鏡像的全過程記錄

    golang編譯的應用是不需要依賴其他運行環(huán)境的,下面這篇文章主要給大家介紹了關(guān)于goland把go項目打包進docker鏡像的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • Go 并發(fā)讀寫 sync.map 詳細

    Go 并發(fā)讀寫 sync.map 詳細

    閱讀本文你將會明確 sync.Map 和原生 map +互斥鎖/讀寫鎖之間的性能情況。標準庫 sync.Map 雖說支持并發(fā)讀寫 map,但更適用于讀多寫少的場景,因為他寫入的性能比較差,使用時要考慮清楚這一點。
    2021-10-10

最新評論

疏勒县| 阿城市| 东港市| 曲阳县| 屯门区| 阿拉善盟| 方城县| 新巴尔虎左旗| 拉萨市| 治多县| 上思县| 玉门市| 固始县| 龙泉市| 无棣县| 尉犁县| 应城市| 武安市| 临夏县| 四子王旗| 昭平县| 梨树县| 长白| 定西市| 依兰县| 广东省| 蒙城县| 乌鲁木齐县| 胶州市| 阜平县| 巫山县| 和林格尔县| 宁海县| 共和县| 武城县| 白银市| 乐清市| 兴国县| 丰都县| 区。| 措美县|