Go语言探索 - 8(原创)

本文介绍了Go语言中的数组概念及使用方法,包括数组的定义、初始化和遍历。此外还探讨了指针数组和二级指针的概念及其应用场景。

Go语言基础系列博客用到的所有示例代码

在 上一篇文章 主要学习了Go 语言变量以及变量的作用域。本篇文章主要学习的是Go语言中的数组、指针数组以及二级指针

关于数组的概念应该不是很陌生,数组简单理解就是在内存中开辟一块连续的内存空间。对数组较好的定义是:数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。

在Go语言中,定义数组的 语法书写格式如下:  var variable_name [ 数组的长度 ] variable_type

在Go语言中,数组的初始化有以下几种写法:

A:初始化数组之前即确定大小,例如  var arraysName = [3]int{ 1, 2, 3 }

B:初始化数组前没有确定大小,例如 var arraysN = [...]int{4, 5, 6 , 7 , 8 } (如果使用此方式不设置数组的大小,Go 语言会根据元素的个数来设置数组的大小)

获取数组内的元素,也是跟其他语言一样,通过 数组名[索引] 去获取索引对应的属性值(索引从0开始,第一个元素索引为 0,第二个索引为 1,以此类推可以得知数组的最大索引是  数组的长度-1 ,最小索引是0)

img_2b5affdc0b56decb52d9aa4003bff43a.png
数组初始化

说到数组 一般我们会通过循环去遍历数组。Go语言遍历数组可以使用for循环进行操作,关于for循环之前也提到过:

img_f20057849566f2d43e04ddd15b5a6b4b.png
for循环

说完了数组,在学习Go语言中的指针数组:

指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向(对应)该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。 那么指针数组又是什么?

指针数组简单理解:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身的大小决定,指针数组内每一个元素都是一个指针。既然指针数组内的元素全部是指针那么我们就可以这样去写:

  var pointArrayName  [POINT_SIZE]*int

假设现在有这样一个需求,我们需要将一个数组 copy到另一个数组,这个时候我们可以怎么去思考?

我们知道,对一个变量获取其地址值,是通过  & 关键字获取其变量的内存地址。然后,数组的本质就是在内存中开辟一块连续的内存地址空间。既然数组是连续的内存地址空间,那么我们就可以将这个连续的内存地址空间 赋值到 指针数组里面,在对 指针数组里面的指针 进行 *指针 即可完成对数组的复制。

img_30504cfa1f016962f1f9b19c21c8470c.png
指针数组

说完了指针数组 在复习回顾下 二级指针,二级指针又称指向指针的指针。(用于存放二级指针的变量称为二级指针变量)

首先任何值都有地址 ,一级指针的值虽然是地址,但这个地址做为一个值同样也需要空间来存放,是空间就具有地址 , 因此二级指针就是存放地址这一值的空间所具有的地址。

二级指针的本质和目的就是为了获取这个地址。 值得一提的是,一级指针所关联的是其值(一个地址)名下空间里的数据,这个数据可以是任意类型并做任意用途,但二级指针所关联的数据只有一个类型一个用途,就是地址,指针就是两个用途提供目标的读取或改写, 那么二级指针就是为了提供对于内存地址的读取或改写

下面是二级指针的一些基本内容以及使用:

img_06ec6070697d3ac0e42d6da124bac960.png
二级指针

因此,一级指针存储的是变量的地址值,而二级指针存储的才是真实的变量地址。

本篇文章主要学习的是Go语言中的数组、指针数组以及二级指针基本内容就结束了。文章关于指针的内容是基于C语言的,因此这里是做复习总结。毕竟无所不能的C语言影响了很多代人。

如果这篇文章对你有帮助,希望各位看官留下宝贵的star,谢谢。

Ps:著作权归作者所有,转载请注明作者, 商业转载请联系作者获得授权,非商业转载请注明出处(开头或结尾请添加转载出处,添加原文url地址),文章请勿滥用,也希望大家尊重笔者的劳动成果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值