• 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语言没有这种语法

  • 相关阅读:
    iOS_03_为什么选择ios开发
    iOS_02_什么是ios开发
    iOS_01_什么是ios
    Hadoop之HDFS
    hadoop组件及其作用
    数组
    Scala基础知识(二)
    hadoop安装过程
    Scala基础知识
    建造者模式
  • 原文地址:https://www.cnblogs.com/geniushuangxiao/p/12796992.html
Copyright © 2020-2023  润新知