Chinaunix首页 | 论坛 | 博客
  • 博客访问: 909036
  • 博文数量: 91
  • 博客积分: 803
  • 博客等级: 准尉
  • 技术积分: 1051
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-24 13:42
文章分类

全部博文(91)

文章存档

2021年(1)

2020年(4)

2019年(4)

2018年(9)

2017年(11)

2016年(11)

2015年(6)

2014年(3)

2013年(28)

2012年(14)

分类: Web开发

2020-04-23 14:29:48


unsafe.Pointer称为通用指针,官方文档对该类型有四个重要描述:
(1)任何类型的指针都可以被转化为Pointer
(2)Pointer可以被转化为任何类型的指针
(3)uintptr可以被转化为Pointer
(4)Pointer可以被转化为uintptr

点击(此处)折叠或打开

  1. package main

  2. import (
  3.     "fmt"
  4.     "unsafe"
  5. )

  6. func main(){

  7.     a := [4]int{1,2,3,4}
  8.     p1 := unsafe.Pointer(&a)
  9.     p2 := uintptr(p1)
  10.     p3 := p2 + 1 * unsafe.Sizeof(p1)
  11.     p4 := (*int)(unsafe.Pointer(p3))
  12.     *p4 = 8
  13.     fmt.Printf("%p %p %d %d %v \n",&a,p1,p2,unsafe.Sizeof(p1),a)
  14. }
输出:
0xc000060140 0xc000060140 824634114368 8 [1 8 3 4]

阅读(1536) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~