Go笔记-指针

Posted ymkfnuiwgij

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go笔记-指针相关的知识,希望对你有一定的参考价值。

Go 语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址
一个指针变量可以指向任何一个值的内存地址 它指向那个值的内存地址,在 32 位机器上占用 4 个字节,在 64 位机器上占用 8 个字节,并且与它所指向的值的大小无关。当然,可以声明指针指向任何类型的值来表明它的原始性或结构性;你可以在指针类型前面加上 * 号(前缀)来获取指针所指向的内容,这里的 * 号是一个类型更改器。使用一个指针引用一个值被称为间接引用。
当一个指针被定义后没有分配到任何变量时,它的值为 nil。
 
对于任何一个变量 var, 如下表达式都是正确的:var == *(&var)
 
注意:
    不能得到一个文字或常量的地址,例如:
        const i = 5
        ptr := &i  // 错误
        ptr2 := $10 // 错误
    指针运算在Go中不合法
        c = *p++
    对空指针的反向引用是非法的,例如:
        var ptr *int
        a := *ptr
 
适度使用指针的优点:
    指针的一个高级应用是你可以传递一个变量的引用(如函数的参数),这样不会传递变量的拷贝。指针传递是很廉价的,只占用 4 个或 8 个字节。当程序在工作中需要占用大量的内存,或很多变量,或者两者都有,使用指针会减少内存占用和提高效率。被指                    向的变量也保存在内存中,直到没有任何指针指向它们,所以从它们被创建开始就具有相互独立的生命周期。
 
 
过度使用指针的缺陷:
    另一方面(虽然不太可能),由于一个指针导致的间接引用(一个进程执行了另一个地址),指针的过度频繁使用也会导致性能下降。
    指针也可以指向另一个指针,并且可以进行任意深度的嵌套,导致你可以有多级的间接引用,但在大多数情况这会使你的代码结构不清晰。
 
学习参考处:https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/directory.md

以上是关于Go笔记-指针的主要内容,如果未能解决你的问题,请参考以下文章

Go笔记-指针

Go 入门笔记

go语言学习笔记 — 基础 — 基本数据类型 — 指针:取地址与取值

go语言学习笔记 — 基础 — 基本数据类型 — 指针:使用指针(变量)获取命令行入参信息

go语言学习笔记 — 进阶 — 反射:反射的类型对象(reflect.Type)— 指针和指针指向的元素

Go语言学习笔记-2