前言 Hey,篇文大家好呀,章带指针我是语言基星期八 作为21世纪的C语言,Go可能多方面思考,篇文最终还是章带指针保留了指针。 但是语言基要比C语言指针简单很多,一起来看看叭。篇文 引言 因为Go语言是章带指针类C语言,所以为了提高效率,语言基仍然保留了指针。篇文 但是章带指针如果没有接触过指针,可能学起来指针需要多多思考一下了。语言基 指针通常情况下,篇文也被称为小白劝退神奇。章带指针 基本类型指针的语言基理解 先看这两行代码。 内存分布图如下。 再看看这样两行代码,这里用到了&。 如图所示。 如果这两个能理解,亿华云恭喜你,指针已经会了一半了。 引用类型指针的理解 先看这样的代码。 内存分布图如下。 值类型和引用类型 值类型 在Go中,值类型主要有。 int,float,bool,string,数组,struct(结构体) 内存分布大致如下。 注:像字符串,数组,结构体这些属于连续存储,变量指向的是它们的第一个地址,剩下的会根据长度计算。 引用类型 在Go中,引用类型主要有。 切片(slice),map,管道(chan) 内存分布大致如下。 栈内存和堆内存的区别 栈内存在存储上,源码下载只能存一些简单的东西,比如数字了,字符了,浮点数了之类的,但是栈内存分配的内存程序员不用回收,由系统自己回收,并且性能很高。 堆内存在存储上就比较丰富了,随便存,像map,随便塞,但是堆内存分配的内存需要程序员自己回收,典型例子,C++,如果语言由GC由GC回收,性能稍弱那么一点点点....,但是人家能随便存啊,多随便。 &和*的意思 &叫做取地址符。 *叫做收地址符吧。 示例 *int是一个整体,站群服务器表示c这个变量只能接收int类型的地址。 代码 执行结果。 可以看到打印的也是一个地址,但是内存图还是基本类型图。 如果要打印c的值,直接*c就好了,取得就是地址里面对应得值了。 关于函数 我们一直在强调,操作只会操作栈上面的值,函数同理。 执行结果。 总结 上述我们主要讲述了基本类型指针和引用类型指针,也叫做值类型和引用类型,并且画出了值类型和引用类型内存的本质区分图,后来又讲了&和*的区别,还有函数传参的本质是什么,希望对大家的学习有帮助。 如果在操作过程中有任何问题,记得下面留言,我们看到会第一时间解决问题。 本文转载自微信公众号「Go语言进阶学习」,可以通过以下二维码关注。转载本文请联系Go语言进阶学习公众号。