美文网首页
Go 如何查看一个变量的内存地址 理解指针问题

Go 如何查看一个变量的内存地址 理解指针问题

作者: 酒深巷子Ya | 来源:发表于2018-11-18 15:35 被阅读54次

熟悉C语言的同学都知道,查看一个变量的地址在处理指针的相关问题的时候直观重要,在C中直接取地址符& 即可。那么在Go语言中如何查看一个变量的地址,我们使用unsafe.Pointer() 函数来查看一个变量的内存地址。
举例:
type Vertex struct {
X, Y float64
}
func (v Vertex) sqrt() float64 {
return math.Sqrt(v.X * v.X + v.Y * v.Y)
}

func (v Vertex) scale(f float64) { //带号 和不带*号的区别 可以从内存地址来看出
fmt.printf("=======", unsafe.Pointer(v))//v 本身就是指针 存储的就是地址 不用取地址
v.X = x.X * f
v.Y = v.Y * f
}

func main() {
v := Vertex{3, 4}
fmt.printf("=======", unsafe.Pointer(&v))
v.scale(10)
fmt.Println(v.sqrt())
}
//带号 打印的结果 ====== -%!(EXTRA unsafe.Pointer=0xc00006e070)======%!(EXTRA unsafe.Pointer=0xc00006e070) 相同
//不带
号 打印的结果 ======%!(EXTRA unsafe.Pointer=0xc000094060)======%!(EXTRA unsafe.Pointer=0xc000094090) 不同
去掉*号 在scale()方法中要对 v 进行取地址操作

相关文章

  • Go 如何查看一个变量的内存地址 理解指针问题

    熟悉C语言的同学都知道,查看一个变量的地址在处理指针的相关问题的时候直观重要,在C中直接取地址符& 即可。那么在G...

  • 六、Go指针

    六、Go语言指针 1.使用&访问变量在内存中地址 2.指针 一个指针变量指向一个值的内存地址。 与变量和常量相同,...

  • Go之指针

    1. 指针的概念 指针是存储另一个变量的内存地址的变量 2. 获取变量的地址 Go语言的取地址符是&,放到一个变量...

  • C语言特性(指针)

    指针 指针的概念 简单来说,变量的内存地址就是该变量的指针;而用于保存内存地址(指针)的变量就是指针变量 指针变量...

  • 2.7-C语言入门-指针

    1.指针的含义-变量的地址 a.指针:C语言中用“指针”来表示内存地址(即:指针指向了内存地址),即“指针”可理解...

  • 【技术】Golang初探——指针、数组、map、函数

    指针 Go 具有指针。 指针保存了变量的内存地址。类型 *T 是指向类型 T 的值的指针。其零值是 nil。 '*...

  • C语言关于指针与指针变量的总结

    指针 一个变量的内存地址称为该变量的“指针”。(指针 即 地址) 存放指针的变量称为"指针变量"。(指针变量 即 ...

  • Go 指南 复杂类型

    一、指针 Go 具有指针。 指针保存了变量的内存地址。 类型 *T 是指向类型 T 的值的指针。其零值是 nil ...

  • iOS指针

    OC中的内存地址:一:指针变量自己所在的内存地址(指针变量也是变量,也有内存地址)二:指针变量所指向的内容的内存地...

  • 对Java中HashCode方法的深入思考

    前言 最近在学习 Go 语言,Go 语言中有指针对象,一个指针变量指向了一个值的内存地址。学习过 C 语言的猿友应...

网友评论

      本文标题:Go 如何查看一个变量的内存地址 理解指针问题

      本文链接:https://www.haomeiwen.com/subject/xkspfqtx.html