Go语言中数组的使用

栏目: Go · 发布时间: 6年前

内容简介:数组,切片,map是容器数据类型。都是可以存储多个值的符合类型。 其中数组是相同类型的一组已编号且长度固定的数据项序列,不用类型和长度是不同的数据类型,例如[5]int, [3]int, [5]byte是不同的类型。索引(index),是从 0 开始,加 1 递增的。使用 [] 访问。

1 概述

数组,切片,map是容器数据类型。都是可以存储多个值的符合类型。 其中数组是相同类型的一组已编号且长度固定的数据项序列,不用类型和长度是不同的数据类型,例如[5]int, [3]int, [5]byte是不同的类型。

Go语言中数组的使用

2 定义语法

// 定义长度和类型,默认使用类型零值进行初始化
var a1 [10]int

// 定义长度和类型,同时初始化部分(全部)元素
// 元素不够从前到后进行初始化
var a2 = [10]int{1, 2, 3, 4, 5}

// 不指定长度,指定类型。使用初始值确定长度
// 有几个初始值,长度就是几
var a3 = [...]int{1, 2, 3, 4, 5, 6}

// 通过索引确定元素值
var a4 = [10]int{0: 1, 3: 2, 5: 3, 4, 5}

3 []索引访问

索引(index),是从 0 开始,加 1 递增的。使用 [] 访问。

arr[0] // 数组的第一个元素
arr[len(arr)-1] // 数组的最后一个元素

4 数组是值类型

数组为值类型,赋值时会生成新拷贝。这个可能和你熟悉的语言不同,稍稍留意。

5 len() 长度

统计元素个数,一维的统计。如果是多维,仅统计一维元素数量。

6 数组遍历

使用 循环索引 或者 for range 的语法完成遍历。

// 循环索引
var arr = [...]string{"a", "b", "c", "d", "e", "f"}
for i, l := 0, len(arr); i < l; i++ {
  fmt.Println(arr[i])
}

// for range
var arr = [...]string{"a", "b", "c", "d", "e", "f", "g", "h"}
for i, v := range arr {
  fmt.Println(i, v)
}

7 多维数组

数组元素的值可以是数组类型,称之为多维数组,要求内部数组的长度相同。以二维数组为例,使用[][]来定义,可以将二维数组想象成一个行列表格。

var a1 [3][5]int
var a2 = [3][5]string{{"a", "b", "c", "d", "e"}, {"f", "g", "h", "i", "j"}, {"k", "l", "m", "n", "o"}}

以上代码就定了二维数组,第一个使用默认值初始,第二个手动填充。

演示如下 Go语言中数组的使用

使用双层循环可以遍历二维数组:

// 循环索引
// 行坐标索引
for i := 0; i < 3; i++ {
  // 列坐标索引
  for j := 0; j < 5; j++ {
    fmt.Print(a2[i][j], " ")
  }
  fmt.Println()
}

// for range
for _, row := range a2 {
  // fmt.Println(i, row)
  for _, value := range row {
    fmt.Print(value, " ")
  }
  fmt.Println()
}

8 数组传参

数组是值类型,传参时会发生值拷贝,当使用大数组时,内存的消耗需要考虑。可以考虑使用数组指针或者切片类型。

func FuncName(p *[9999]float64) {
}

9 ==,!= 数组间的比较

两个数组的类型,长度,元素值,顺序都相同,认为两个数组相等。

[3]{1, 2, 3} == [4]{1, 2, 3, 4}
// false

[3]{1, 2, 3} == [3]{3, 2, 1}
// false

[3]{1, 2, 3} == [3]{1, 2, 3}
// true

完! 原文出自: 小韩说课

微信关注:小韩说课 Go语言中数组的使用


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Pro Git

Pro Git

Scott Chacon / Apress / 2009-8-27 / USD 34.99

Git is the version control system developed by Linus Torvalds for Linux kernel development. It took the open source world by storm since its inception in 2005, and is used by small development shops a......一起来看看 《Pro Git》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器