001、GO之指針轉換


01、Pointer類型

  unsafe包下,有定義type Pointer *ArbitraryType(任意類型指針),可繞過GO的類型限制,type ArbitraryType int

  1. 任何類型的指針值都可以轉換為Pointer。
  2. Pointer可以轉換為任何類型的指針值。
  3. uintptr可以轉換為Pointer。
  4. Pointer可以轉換為uintptr。

02、使用示例

  在math包下,unsafe.go文件中大量使用,例如

  func Float32bits(f float32) uint32 { return *(*uint32)(unsafe.Pointer(&f)) }

  func Float64bits(f float64) uint64 { return *(*uint64)(unsafe.Pointer(&f)) }

03、slice定義,底層為可容納所有類型的數組指針

type slice struct {
array unsafe.Pointer
len int
cap int
}

04、uintptr定義

  在buildin.go文件中,type uintptr uintptr,uintptr是integer類型,可存放任意長度的指針值。

  此文件只是給預定義標識符添加文檔,實際GO語言沒有這種語法

 


免責聲明!

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



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