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语言中数组的使用


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

查看所有标签

猜你喜欢:

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

数字民主的迷思

数字民主的迷思

[美] 马修·辛德曼 / 唐杰 / 中国政法大学出版社 / 2015-12-25 / CNY 39.00

马修·辛德曼著的《数字民主的迷思》主要讨论互联网对美国政治的影响,聚焦的是“民主化”这一课题。针对公众关于网络民主的美好想象与过分狂热,它通过对在线竞选、链接结构、流量模式、搜索引擎使用、博客与博主、内容生产的“规模经济”等主题的深入处理,借助大量数据图表与分析,勾勒出互联网政治的种种局限性。尤其表明,网络政治信息仍然为一小群精英与机构所创造和过滤,在网络的每一个层次和领域都仍然遵循着“赢家通吃”......一起来看看 《数字民主的迷思》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

SHA 加密
SHA 加密

SHA 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具