成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

有點不安全卻又一亮的 Go unsafe.Pointer

kviccn / 2090人閱讀

摘要:因為它是不安全的,但是在特殊的場景下,使用了它??梢源蚱频念愋秃蛢?nèi)存安全機制,讓你獲得眼前一亮的驚喜效果

在上一篇文章 《深入理解 Go Slice》 中,大家會發(fā)現(xiàn)其底層數(shù)據(jù)結(jié)構(gòu)使用了 unsafe.Pointer。因此想著再介紹一下其關(guān)聯(lián)知識

原文地址:有點不安全卻又一亮的 Go unsafe.Pointer

前言

在大家學習 Go 的時候,肯定都學過 “Go 的指針是不支持指針運算和轉(zhuǎn)換” 這個知識點。為什么呢?

首先,Go 是一門靜態(tài)語言,所有的變量都必須為標量類型。不同的類型不能夠進行賦值、計算等跨類型的操作。那么指針也對應(yīng)著相對的類型,也在 Compile 的靜態(tài)類型檢查的范圍內(nèi)。同時靜態(tài)語言,也稱為強類型。也就是一旦定義了,就不能再改變它

錯誤示例
func main(){
    num := 5
    numPointer := &num

    flnum := (*float32)(numPointer)
    fmt.Println(flnum)
}

輸出結(jié)果:

# command-line-arguments
...: cannot convert numPointer (type *int) to type *float32

在示例中,我們創(chuàng)建了一個 num 變量,值為 5,類型為 int。取了其對于的指針地址后,試圖強制轉(zhuǎn)換為 *float32,結(jié)果失敗...

unsafe

針對剛剛的 “錯誤示例”,我們可以采用今天的男主角 unsafe 標準庫來解決。它是一個神奇的包,在官方的詮釋中,有如下概述:

圍繞 Go 程序內(nèi)存安全及類型的操作

很可能會是不可移植的

不受 Go 1 兼容性指南的保護

簡單來講就是,不怎么推薦你使用。因為它是 unsafe(不安全的),但是在特殊的場景下,使用了它??梢源蚱?Go 的類型和內(nèi)存安全機制,讓你獲得眼前一亮的驚喜效果

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/29797.html

相關(guān)文章

  • 深入理解 Go map:賦值和擴容遷移

    摘要:我相信這樣你能更好的讀懂這篇文章原文地址深入理解賦值和擴容遷移哈希函數(shù)哈希函數(shù),又稱散列算法散列函數(shù)。而一個好的哈希函數(shù),應(yīng)當盡量少的出現(xiàn)哈希沖突,以此保證操作哈希表的時間復雜度但是哈希沖突在目前來講,是無法避免的。 概要 在 上一章節(jié) 中,數(shù)據(jù)結(jié)構(gòu)小節(jié)里講解了大量基礎(chǔ)字段,可能你會疑惑需要 #&(!……#(?。?! 來干嘛?接下來我們一起簡單了解一下基礎(chǔ)概念。再開始研討今天文章的重點內(nèi)...

    wudengzan 評論0 收藏0
  • 深度解密Go語言之 map

    摘要:當然,哈希查找表的平均查找效率是,如果哈希函數(shù)設(shè)計的很好,最壞的情況基本不會出現(xiàn)。選擇函數(shù)主要考察的是兩點性能碰撞概率。再用哈希值的高位,找到此在中的位置,這是在尋找已有的。這篇文章主要講 map 的賦值、刪除、查詢、擴容的具體執(zhí)行過程,仍然是從底層的角度展開。結(jié)合源碼,看完本文一定會徹底明白 map 底層原理。 我要說明的是,這里對 map 的基本用法涉及比較少,我相信可以通過閱讀其他入門...

    番茄西紅柿 評論0 收藏0
  • 深度解密Go語言之 map

    摘要:當然,哈希查找表的平均查找效率是,如果哈希函數(shù)設(shè)計的很好,最壞的情況基本不會出現(xiàn)。選擇函數(shù)主要考察的是兩點性能碰撞概率。再用哈希值的高位,找到此在中的位置,這是在尋找已有的。這篇文章主要講 map 的賦值、刪除、查詢、擴容的具體執(zhí)行過程,仍然是從底層的角度展開。結(jié)合源碼,看完本文一定會徹底明白 map 底層原理。 我要說明的是,這里對 map 的基本用法涉及比較少,我相信可以通過閱讀其他入門...

    siberiawolf 評論0 收藏0
  • 深入理解 Go map:初始化和訪問元素

    摘要:但是哈希沖突碰撞是不可避免的而在中當滿了后,就會使用溢出桶接著存儲。并對其長度進行邊界值檢驗初始化初始化哈希因子根據(jù)傳入的,計算一個可以放下個元素的桶的最小值分配并初始化。 從本文開始咱們一起探索 Go map 里面的奧妙吧,看看它的內(nèi)在是怎么構(gòu)成的,又分別有什么值得留意的地方? 第一篇將探討初始化和訪問元素相關(guān)板塊,咱們帶著疑問去學習,例如: 初始化的時候會馬上分配內(nèi)存嗎? 底層數(shù)...

    vboy1010 評論0 收藏0
  • golang實現(xiàn)儀表控制-visa32.dll方式

    摘要:,語言實現(xiàn)儀表控制可以采用種方式,一種是使用編程,使用驅(qū)動自帶的文件進行開發(fā),但是感覺怪怪的,感覺這樣還不如直接使用進行開發(fā),還有現(xiàn)成的版本可用。硬件信息為查詢儀表清單。類型轉(zhuǎn)換是必須的,的是由首字符指針長度組成。 golang,go語言實現(xiàn)儀表控制可以采用2種方式,一種是使用CGO編程,使...

    xcold 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<