对于获取slice的指针地址, 通过unsafe.Pointer 和 "%p"占位符两种方式得到的地址是不同的

  

	s := make([]int, 1)
t.Log(unsafe.Pointer(&s),unsafe.Pointer(&(s[0])),len(s),cap(s))
t.Logf("%p\n",s)

  unsafe.Pointer获取得到的是当前slice结构实例的指针

//runtime包下
type slice struct {
array unsafe.Pointer
len int
cap int
}

  

  而"%p"获取到的是当前slice中存储的数组指针

// reflect包下的方法
func (v Value) Pointer() uintptr {
// TODO: deprecate
k := v.kind()
switch k {
case Chan, Map, Ptr, UnsafePointer:
return uintptr(v.pointer())
case Func:
if v.flag&flagMethod != 0 {
// As the doc comment says, the returned pointer is an
// underlying code pointer but not necessarily enough to
// identify a single function uniquely. All method expressions
// created via reflect have the same underlying code pointer,
// so their Pointers are equal. The function used here must
// match the one used in makeMethodValue.
f := methodValueCall
return **(**uintptr)(unsafe.Pointer(&f))
}
p := v.pointer()
// Non-nil func value points at data block.
// First word of data block is actual code.
if p != nil {
p = *(*unsafe.Pointer)(p)
}
return uintptr(p) case Slice: // 这里获取的当前slice中存储的数组引用的内存地址
return (*SliceHeader)(v.ptr).Data
}
panic(&ValueError{"reflect.Value.Pointer", v.kind()})
}

  

最新文章

  1. 20145208《信息安全系统设计基础》实验五 简单嵌入式WEB 服务器实验
  2. HAProxy学习笔记
  3. 2.精通前端系列技术之JS模块化开发-深入学习seaJs(四)
  4. hdu 5265 pog loves szh II STL
  5. 从算法入手讲解如何在SQL Server中实现最优最简
  6. [转]ASP.NET MVC 2: Model Validation
  7. Quartz定时任务学习(五)触发器
  8. MapReduce实战:查找相同字母组成的单词
  9. ruby+rt标签的效果
  10. python开发concurent.furtrue模块:concurent.furtrue的多进程与多线程&协程
  11. linux服务器中毒可疑进程sfewfesfs CPU80%
  12. 在Python中用Request库模拟登录(四):哔哩哔哩(有加密,有验证码)
  13. JAVA的下载与安装和环境变量配置等详细教程
  14. GUI:GUI的方式创建/训练/仿真/预测神经网络—Jason niu
  15. python之装饰器函数
  16. STL的基本介绍
  17. vue中为对象添加值的问题
  18. plsql免安装客户端的配置
  19. 【学习笔记】python2和python3的input()
  20. 大数据技术Hadoop面试题

热门文章

  1. ElasticSearch实战系列八: Filebeat快速入门和使用---图文详解
  2. Navicat15破解+网盘位置
  3. 简单解析PAT、PMT的程序
  4. 配置react / antd 按需加载 并且使用less(react v16)
  5. virt-install 安装系统和启动虚机
  6. Java中抽象类和接口的介绍及二者间的区别
  7. 牛客网数据库SQL实战解析(51-61题)
  8. soso官方:网页分类技术介绍
  9. php实现无限极分类(多维数组 / 二维数组)形式
  10. 修改linux操作系统的时间可以使用date指令 运维系统工程师必会技术