Go语言入门(19)-指针(下)
Go语言的函数和方法都是按值传递参数的,这意味着函数总是操作于呗传递参数的副本。
当指针被传递到函数时,函数将接收传入的内存地址的副本。之后函数可以通过解引用内存地址来修改指针指向的值。
指针接收者:
方法的接收者和方法的参数在处理指针方面是很相似的。Go语言在变量通过点标记法进行调用的时候,自动使用“&”取得变量的内存地址,所以不用写(&nathan).birthday()这种形式也可以正常运行。
Time.Now():更新时间为当前系统时间。
内部指针:
Go语言提供了 内部指针 这种特性,它用于确定结构体中指定字段的内存地址。
同时,“&”操作符不仅可以获得结构体的内存地址,还可以获得结构体中指定字段的内存地址。
修改数组:函数通过指针对数组的元素进行修改
隐式指针:
Go语言里一些内置的集合类型就在暗中使用指针,例如map就是一种隐式指针,它在被赋值或者被作为参数传递的时候不会被复制。并且map的键和值都可以是指针类型,不过需要将指针指向map的情况不多见。
slice指向数组:
之前说过slice是指向数组的窗口,实际上slice在指向数组元素的时候也使用了指针。
每个slice内部都会被表示为一个包含3个元素的结构,它们分别指向:1.数组的指针;2. slice的容量;3. slice的长度
当silce被直接传递至函数或方法时,slice的内部指针就可以对底层数据进行修改。
指针和接口: