内容简介:#指针变量存储的是一个值,但是这个值在内存中有一个地址,而指针保存的就是这个地址,通过这个地址,可以获取到值。看例子:
#指针
变量存储的是一个值,但是这个值在内存中有一个地址,而指针保存的就是这个地址,通过这个地址,可以获取到值。
看例子:
func main(){
var a int = 123
p := &a
fmt.Println(*p)
}
上面例子中,首先定义的了一个 a
变量,值为: 123
其后通过 &
符号,为 a
生成一个指针,其实就是内存地址
最后,通过 *
符号可以将 p
指针的值给取出来
这个过程兜兜转转又回来原点,其实这么做的目的是为了能获取到 a
变量的原始值。
因为给函数传递的参数是对变量的建立副本,简单来说就是 a
变量赋值给另外一个变量,对这个副本变量修改不会影响到 a
变量。
而有些时候想要获取到原始值,就可以这么做。
其实这样可以实现钩子的设计模式,不修改其它代码,通过修改原始值,就可以影响程序的运行结果,这是钩子的价值所在。
另外指针也是有类型的,比如上面的例子,由于 a
变量是一个 int
类型,所以指针 p
的类型是一个 int
类型的指针,通过打印可以获取到类型: *int
fmt.Printf("%T", p) // *int
fmt.Printf("%T", *p) // int
第一个输出是输出 p
的类型,第二个输出是已经取出来的值的类型
Go 语言中还可以通过 new()
函数对指针类型创建一个指针,例子如下:
a := new(string)
*a = "修改 a 指针的原始值"
fmt.Printf("%T", a)
输出 *string
, 是一个 string
类型的指针
通过 new()
方式创建的指针,都会有一个默认值,就是对应类型的零值
以上就是对 Go 指针的理解,有不同见解的欢迎评论。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 关于golang指针的理解与使用
- 对指针和引用的理解(c++)
- 理解 Go 语言中的指针和内存分配
- golang 结合实例更好的理解参数传递和指针
- 像数学公式一样彻底简单理解JavaScript函数调用与this 指针
- NULL 指针、零指针、野指针
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Writing Windows VxDs and Device Drivers, Second Edition
Karen Hazzah / CMP / 1996-01-12 / USD 54.95
Software developer and author Karen Hazzah expands her original treatise on device drivers in the second edition of "Writing Windows VxDs and Device Drivers." The book and companion disk include the a......一起来看看 《Writing Windows VxDs and Device Drivers, Second Edition》 这本书的介绍吧!