Golang从入门到精通(八):Golang数组
来源:互联网 发布:java一年多的工作经验 编辑:程序博客网 时间:2024/05/29 19:15
数组定义
数组是具有相同唯一类型的一组已编号且长度固定的数据项序列(这是一种同构的数据结构);这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。数组长度必须是一个常量表达式,并且必须是一个非负整数。需要强调:数组长度也是数组类型的一部分。
Go语言数组
数组是Go语言编程中最常用的数据结构之一。顾名思义,数组就是指一系列同一类型数据的集合。数组中包含的每个数据被称为数组元素( element),一个数组包含的元素个数被称为数组的长度。需要强调的一点是Go语言中数组的长度固定,无法扩容。
声明定义
数组在定义初始化的时候,长度可以指定,也可以不指定让编译器自动推断。几种常见的数组定义初始化的方式如下:
var a [3] int //3个int型的数组,初始值是3个0,数组“零值”状态arr:=[5]int{1,2,3,4,5} //定义并初始化长度为5的数组var array2 = [...]int{6, 7, 8} //不声明长度q := [...] int {1,2,3} //不声明长度r := [...] int {99:-1} //长度为100的数组,只有最后一个是-1,其他都是0
在声明var arr1 [5]int
中每个元素是一个整形值,当声明数组时所有的元素都会被自动初始化为默认值 0。
数组元素访问
Go语言中,可以使用数组下标来访问数组中的元素。数组下标从0开始,len(arr)-1
则表示最后一个元素的下标。
只有有效的索引可以被使用,当使用等于或者大于 len(arr)
的索引时:如果编译器可以检测到,会给出索引超限的提示信息;如果检测不到的话编译会通过而运行时会 panic
。
比起C语言,Go语言可以直接调用打印函数打印出整个数组。下面我们定义一个二维数组,然后来打印出数组长度和整个数组:
package mainimport "fmt"func main() { myArray := [3][4]int{{1,2,3,4},{1,2,3,4},{1,2,3,4}} //打印一维数组长度 fmt.Println(len(myArray)) //打印二维数组长度 fmt.Println(len(myArray[1])) //打印整个二维数组 fmt.Println(myArray)}
for-range结构
这是Go语言一种独有的结构,可以用来遍历访问数组的元素。
for ix, value := range array01 { ...}
第一个返回值 ix 是数组的索引,第二个是在该索引位置的值;他们都是仅在 for 循环内部可见的局部变量。value 只是 array01 某个索引位置的值的一个拷贝,不能用来修改 array01 该索引位置的值。例如:
package mainimport "fmt"func main() { var arr1 [5]int for i:=0; i < len(arr1); i++ { arr1[i] = i * 2 } for i:=0; i < len(arr1); i++ { fmt.Printf("Array at index %d is %d\n", i, arr1[i]) }
当然,如果你在遍历数组元素的时候,如果想遗弃索引id,可以直接把索引id标为下划线_
。一个求数组里面的平均值的例子如下:
package mainimport ( "fmt")func main() { sum := 0.0 var avg float64 xs := [6]float64{1, 2, 3, 4, 5, 6} switch len(xs) { case 0: avg = 0 default: for _, v := range xs {//下划线表示那个值舍去,即舍去下标索引 sum += v } avg = sum / float64(len(xs)) } fmt.Println(avg)}
- Golang从入门到精通(八):Golang数组
- Golang从入门到精通(一):Golang介绍
- Golang从入门到精通(三):Golang数据类型
- Golang从入门到精通(九):Golang字符串
- Golang从入门到精通(十):Golang函数
- Golang从入门到精通(十一):Golang方法
- Golang从入门到精通(十四):Golang结构体
- Golang从入门到精通(十五):Golang指针
- Golang从入门到精通(十六):Golang接口
- Golang从入门到精通(十七):Golang反射
- Golang从入门到精通(二):Golang开发环境配置
- Golang从入门到精通(四):Golang变量定义和初始化
- Golang从入门到精通(五):Golang控制语句之if/else
- Golang从入门到精通(六):Golang控制语句之for
- Golang从入门到精通(七):Golang控制语句之switch
- Golang从入门到精通(十二):Golang复合数据之slice
- Golang从入门到精通(十三):Golang复合数据之map
- Golang从入门到精通(十八):Golang并发编程之Goroutine
- 导航条(参照冒险岛官网)12.12
- Java Swing 多种组件完美界面实例(代码+截图)
- JavaScript 闭包
- 触发器
- ListView滑动置顶,listview吸顶效果,安卓时间栏状态栏透明,有图有源码
- Golang从入门到精通(八):Golang数组
- 八周二次课(12月12日) 14.6 多进程Manager 14.7 进程池
- 雕刻机蓝牙android上位机控制器设计
- 算法系列—— 输出所有的笛卡尔积组合
- linux基本操作---shell脚本-变量、表达式、日期
- 一看就懂的,java深拷贝浅拷贝
- 用ajax实现图片上传 帮你简单快速学会使用
- Python基础-安装第三方模块 pip 和 Anaconda
- 史上最全的Android 图片滤镜 colorMatrix自定义任意图片滤镜