Go语言是个强类型语言。也就是说Go对类型要求严格,不同类型不能进行赋值操作。指针也是具有明确类型的对象,进行严格类型检查。下面的代码会产生编译错误 :

package main
import ("fmt"
)
func main() {u := uint32(32)i := int32(1)fmt.Println(&u, &i) // 打印出地址p := &i // p 的类型是 *int32p = &u // &u的类型是 *uint32,于 p 的类型不同,不能赋值p = (*int32)(&u) // 这种类型转换语法也是无效的fmt.Println(p)
}


unsafe 包提供的Pointer方法可以完成这个任务

package main
import ("fmt""unsafe"
)
func main() {u := uint32(32)i := int32(1)fmt.Println(&u, &i) // 打印出地址p := &i // p 的类型是 *int32p = (*int32)(unsafe.Pointer(&u)) // &u的类型是 *uint32,于 p 的类型不同,不能赋值fmt.Println(p)
}

Go 指针 unsafe.Pointer相关推荐

  1. Golang unsafe.Pointer指针

    相较于 C 而言,Go 语言在设计时为了使用安全给指针在类型和运算上增加了限制,这让Go程序员既可以享受指针带来的便利,又避免了指针的危险性.除了常规的指针外,Go 语言在 unsafe 包里其实还通 ...

  2. go uintptr unsafe Pointer offset() 的使用

    go语言基本类型 类型名称 有无符号 占用位数 int8 Yes 8 int16 Yes 16 int32 Yes 32 int64 yes 64 uint8 No 8 uint16 No 16 ui ...

  3. Go unsafe Pointer

    Go unsafe Pointer Go被设计为一种强类型的静态语言,强类型意味着类型一旦确定就无法更改,静态意味着类型检查在运行前就做了. 指针类型转换 为了安全考虑,两个不同类型的指针不能相互转换 ...

  4. uintptr和unsafe.Pointer的区别

    unsafe.Pointer其实就是类似C的void *,在golang中是用于各种指针相互转换的桥梁.uintptr是golang的内置类型,是能存储指针的整型,uintptr的底层类型是int,它 ...

  5. 【C++】智能指针 Smart Pointer

    智能指针 智能指针 Smart Pointer auto_ptr 智能指针的自实现 shared_ptr weak_ptr unique_ptr 智能指针 Smart Pointer 用来改善传统指针 ...

  6. 常量指针(Pointer to const)与指针常量(Const pointer)

    常量指针(Pointer to const)与指针常量(Const pointer) 1. Concepts 很多时候对于这两个概念的困惑来自于中文字面翻译.我们无法通过字面含义直接理解判断该'常量' ...

  7. [C++] 什么是智能指针(Smart Pointer)以及何时使用

    答案 1 智能指针是一个类,它封装了一个原始的C++指针,以管理所指对象的生命期.没有单一的智能指针类型,但所有这些都尝试以实用的方式抽象原始指针. 智能指针应优先于原始指针. 如果你觉得你需要使用指 ...

  8. 【软件分析/静态程序分析学习笔记】7.指针分析(Pointer Analysis)入门

    写在前面的话 本渣有幸成为南京大学软件学院研究生,在前往仙林校区蹭课的时候偶然发现了这门宝藏课程,听了以后感觉深有收获,但又因为课程难度较大,国庆假期归来发现遗忘较多,因此开了一坑来记录自己对每节课知 ...

  9. 指针(pointer)与引用(reference)

    const const是常量的意思,被其修饰的变量不可修改 如果修饰的是类.结构体(的指针),放在数据类型(int)前后没有区别,其成员也不可以更改 const修饰的是其右边的内容 虽然p1不能修改指 ...

最新文章

  1. 中国大唐集团公司在役及在建资产分布在全国31个省区市以及境外
  2. linux如何锁定文件夹,如何在没有加密的情况下保护Linux / Unix上的文件夹? | MOS86...
  3. android 组合属性动画,Android属性动画组合(sequence串行、together并行)
  4. 操作系统面试题目详解
  5. JavaScript 压缩 加密 解密
  6. 洛谷P1182 数列分段 Section II(二分+贪心)
  7. 创建MOSS网站下的新闻
  8. 使用GDAL对DEM渲染处理流程
  9. originos是鸿蒙系统吗,originos系统是安卓吗
  10. JS的this指向问题(史上最全)
  11. npm 报错 426 Upgrade Required
  12. 计算机平面设计基础 photoshop基本操作
  13. 思想,坚持,信仰,一切
  14. 计算机网络安全(1)
  15. 服务器上reportqueue文件夹,删除reportqueue文件夹的操作方法-电脑自学网
  16. 2020年最好用的手机是哪一款_2020年值得入手的三款手机,性价比超高,网友:真香!...
  17. 浅析微信支付:支付结果通知
  18. php云片网api的运用,如何实现php调用云片网接口发送短信
  19. Failed to connect to Coordinator: All builds will run in standalone mode.
  20. Android Framework学习(八)之Handler消息机制(Native层)解析

热门文章

  1. 自训练 + 预训练 = 更好的自然语言理解模型
  2. 北京大学孙俊教授课题组深度视频研究室招收2021级博士生
  3. OKGAN:线上训练GAN的方法
  4. debug assertion failed是什么意思?_MD5是是什么?为什么很多压缩文件上都有这个东西?...
  5. gearman php mysql_php使用gearman
  6. php 上传pdf文件损坏,php – 强制下载PDF文件,损坏文件
  7. Vue——props默认值为工厂函数时[工厂函数:undefined]问题解决方案
  8. C#——事件(Event)DEMO[闻鸡起舞]
  9. Easy problem
  10. shell读取文件到变量、管道重定向、if和while嵌套使用、命令替换