🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] >[success] ## **1:数组基本介绍:** >[success] ### **1:Go 语言提供了数组类型的数据结构。** 1)数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。相对于去声明number0, number1, ..., and number99的变量, 2)使用数组形式numbers[0],numbers[1] ..., numbers\[99\]更加方便且易于扩展。数组元素可以通过索引(位置)来读取(或者修改),索引从0开始,第一个元素索引为 0,第二个索引为 1,以此类推。 ![](https://img.kancloud.cn/14/00/1400d22459b8c3398153f8854feb15cd_1280x307.png) >[success] ### **2:声明数组:** 1)数组是同一种数据类型元素的集合。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。 基本语法: Var 数组变量名 【元素数量】T ![](https://img.kancloud.cn/11/d2/11d24f9a8f57a42bc4c53646b9f75f83_1280x466.png) 2)比如:var a [5]int, 数组的长度必须是常量,并且长度是数组类型的一部分。一旦定义,长度不能变。 [5]int和[10]int是不同的类型。 代码如下: ![](https://img.kancloud.cn/3f/ca/3fca19b3c5d31c30374bb54141ff3f12_1280x517.png) ![](https://img.kancloud.cn/65/51/65517eaf4a2214cf80e3e87f843cb3e8_1280x578.png) >[success] ### **3:数组注意事项:** 数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1,访问越界(下标在合法范围之外),则触发访问越界,会panic。 >[success] ### **4:数组初始化** **数组4种初始化方法:如下** **第一种:** ![](https://img.kancloud.cn/7d/67/7d6703b4c7eec4af8b4005a080e4eb1b_1280x213.png) **第二种:类型推导方式** ![](https://img.kancloud.cn/fb/f5/fbf507c459bef2d8d951966ddaf85918_1280x266.png) **第三种:** ![](https://img.kancloud.cn/ac/de/acdedb16f60b3b8a165d01e5618911d9_1280x280.png) **第四种:根据下标来指定(赋)值** ![](https://img.kancloud.cn/b4/e6/b4e6d11a19c4504b3796e0f753e13a14_1280x297.png) **其他使用方法:类型推导** ![](https://img.kancloud.cn/c5/72/c572aaf22814801e24dede50db1bc1c9_1280x210.png) >[success] ### **5:访问数组** **方式1:** 要求:将控制台输入5个成绩保存到数组,float64类型 ![](https://img.kancloud.cn/3b/55/3b550c27a485c17ab45f8ce2be637aff_1280x555.png) **结果如图:** ![](https://img.kancloud.cn/7c/27/7c2736067807509ecf5c614abb0cdda1_1280x665.png) **方式2:** **for-range** 这是go语言一种独有的结构,可以用来遍历访问,数组的元素 基本语法: Array01是要遍历的数组变量名 for index,value := range array01{ ........ } 说明: 1)第一个返回值index是数组的下标 2)第二个value是在该下标位置的值 3)他们都是仅在for循环内部可见的局部变量 4)遍历数组元素的时候,如果不想使用下标index,可以直接把下标index标为下划线\_ 5)index 和value的名称不是固定的,即程序员可以自行指定,一般命名为index和value 图下是类型推倒 ![](https://img.kancloud.cn/d8/93/d893690d62660d836c00fb5a7cdc14b1_1280x500.png) ![](https://img.kancloud.cn/1a/3b/1a3b06912d988c371db5488f3e7c171f_1280x411.png) 如果只要值,忽略下标,操作如下: ![](https://img.kancloud.cn/4e/61/4e6179975224243f5b9197ba1d214154_1280x444.png) >[success] ## **6:数组细节** 1)数组 是多个相同类型数据的组合,一个数组一旦声明定义了,其长度是固定的,不能动态变化。 2)var arr [int这时arr就是一个slice切片,切片后面专门讲解,不急哈. 3)数组 中的元素可以是任何数据类型,包括值类型和引用类型,但是不能混用。 4)数组创建后,如果没有赋值,有默认值 数值类型数组:默认值为0 字符串数组:默认值为 bool数组:默认值为false 5)使用数组的步骤1.声明数组并开辟空间2给数组各个元素赋值3使用数组 6)数组的 下标是从0开始的。 7)数组 下标必须在指定范围内使用,否则报panic,数组越界,比如 var arr [5]int则有效下标为0-4 8)Go的数组属值类型, 在默认情况下是值传递,因此会进行值拷贝。数组间不会相互影响 ![](https://img.kancloud.cn/56/08/5608a6b448003113c23cacf7676073d0_1276x720.png) 9)如想在其它函数中,去修改原来的数组,可以使用引用传递(指针方式) [先体验下,画示意图] ![](https://img.kancloud.cn/bb/8d/bb8de36c783cef01a11363df3846081b_1280x544.png) 10)长度是数组类型的一部分,在传递函数参数时需要考虑数组的长度,看下面案例: ![](https://img.kancloud.cn/e6/63/e663e30660fdcfb27cb542eadaaf3cf7_1280x407.png) **解答:** 第一题:编译错误,因为,【】int是切片 第二题:编译错误,因为,【4】int和main函数里面的【...】{1,2,3},不是一个类型 第三题:编译通过 >[success] ## **7:数组应用案例** 1)创建一一个byte类型的26个元素的数组,分别放置'A-Z‘。使用for 循环访问所有元素并打印出来。提示:字符数据运算'A'+1 > 'B' ![](https://img.kancloud.cn/36/29/36290cff591053d66d3570c092f6234f_1280x558.png) 2)请求出一个数组的最大值,并得到对应的下标。 ![](https://img.kancloud.cn/6e/2f/6e2fbae0a6c3465002bb259efd7bb9f8_1223x720.png) 3)请求出一个数组的和,和平均值。for -range ![](https://img.kancloud.cn/c9/96/c996130ee353a42407d2af4af7fda203_1280x414.png) 4)随机生成5个数,并将其反转打印 ![](https://img.kancloud.cn/e4/08/e408707d3e374c1b0a7f67501b0e2360_742x720.png)