首页 > 其他分享 >Go 快速入门指南 - 数组

Go 快速入门指南 - 数组

时间:2022-12-24 18:38:24浏览次数:41  
标签:指南 arr 入门 元素 var go 数组 Go main

概述

​数组​​​ 是具有相同数据类型的一组长度固定的数据项序列,分配在连续的内存地址上。其中数据类型可以是整型、布尔型等基础数据类型,也可以是自定义数据类型。 ​​数组长度​​​ 必须是一个常量表达式,并且必须是一个非负数。同时,​​数组长度​​​ 也是数组类型的一部分, 例如 ​​[3]int​​​ 和 ​​[5]int​​ 是不同的类型。

语法规则

在不确定数组元素的具体数量时,可以通过指定 ​​长度​​ 分配空间。

var 变量名称 [长度]数据类型

# 例子
var arr [5]int

在确定数组元素的具体数量以及值时,可以省略 ​​长度​​​ 变量,这种方式称为 ​​数组常量​​。

var 变量名称 [...]数据类型{值1, 值2, 值3...}

# 例子
var arr [...]int{v1, v2, v3...}

获取值/改变值

和其他编程语言一样,数组的元素可以通过 ​​索引​​ 来获取或修改,​​索引​​ 从 ​​0​​ 开始。

package main

func main() {
var arr [3]int

arr[0] = 100 // 为数组第 1 个元素赋值
arr[1] = 200 // 为数组第 2 个元素赋值
arr[2] = 300 // 为数组第 3 个元素赋值

println(arr[0]) // 输出数组第 1 个元素
println(arr[1]) // 输出数组第 2 个元素
println(arr[2]) // 输出数组第 3 个元素

var arr2 = [...]int{400, 500, 600} // 使用 数组常量 定义
println(arr2[0]) // 输出数组第 1 个元素
println(arr2[1]) // 输出数组第 2 个元素
println(arr2[2]) // 输出数组第 3 个元素
}

// $ go run main.go
// 输出如下
/**
100
200
300
400
500
600
*/

获取数组长度

通过 ​​len()​​ 函数获取。

package main

import "fmt"

func main() {
var arr [3]int

arr[0] = 100 // 为数组第 1 个元素赋值
arr[1] = 200 // 为数组第 2 个元素赋值
arr[2] = 300 // 为数组第 3 个元素赋值

fmt.Printf("数组长度 = %d\n", len(arr))
}

// $ go run main.go
// 输出如下
/**
数组长度 = 3
*/

遍历数组

可以使用两种方法遍历数组,普通循环 和 range 循环。

普通循环

package main

import "fmt"

func main() {
var arr [3]int

arr[0] = 100 // 为数组第 1 个元素赋值
arr[1] = 200 // 为数组第 2 个元素赋值
arr[2] = 300 // 为数组第 3 个元素赋值

for i := 0; i < len(arr); i++ {
fmt.Printf("index = %d, val = %d\n", i, arr[i])
}
}

// $ go run main.go
// 输出如下
/**
index = 0, val = 100
index = 1, val = 200
index = 2, val = 300
*/

range 循环

package main

import "fmt"

func main() {
var arr [3]int

arr[0] = 100 // 为数组第 1 个元素赋值
arr[1] = 200 // 为数组第 2 个元素赋值
arr[2] = 300 // 为数组第 3 个元素赋值

for i, v := range arr {
fmt.Printf("index = %d, val = %d\n", i, v)
}
}

// $ go run main.go
// 输出如下
/**
index = 0, val = 100
index = 1, val = 200
index = 2, val = 300
*/

多维数组

将多个一维数组进行组装,得到一个多维数组。

package main

import "fmt"

func main() {
var arr [3][3]int // 定义一个 3 行 3 列的二维数组

// 数组元素初始化
for i := 0; i < len(arr); i++ {
for j := 0; j < len(arr[i]); j++ {
arr[i][j] = i*3 + j + 1
}
}

// 初始化完成后,数组元素如下
// -------------------
// | 1 | 2 | 3 |
// -------------------
// | 4 | 5 | 6 |
// -------------------
// | 7 | 8 | 8 |
// -------------------

// 输出数组元素
for i := 0; i < len(arr); i++ {
for j := 0; j < len(arr[i]); j++ {
fmt.Printf("第 %d 行,第 %d 列 的值 = %d\n", i+1, j+1, arr[i][j])
}
}
}

// $ go run main.go
// 输出如下
/**
第 1 行,第 1 列 的值 = 1
第 1 行,第 2 列 的值 = 2
第 1 行,第 3 列 的值 = 3
第 2 行,第 1 列 的值 = 4
第 2 行,第 2 列 的值 = 5
第 2 行,第 3 列 的值 = 6
第 3 行,第 1 列 的值 = 7
第 3 行,第 2 列 的值 = 8
第 3 行,第 3 列 的值 = 9
*/

扩展阅读

  1. 1. https://zh.wikipedia.org/wiki/%E6%95%B0%E7%BB%84
  2. 2. https://github.com/unknwon/the-way-to-go_ZH_CN/blob/master/eBook/07.1.md

Go 快速入门指南 - 数组_Go

标签:指南,arr,入门,元素,var,go,数组,Go,main
From: https://blog.51cto.com/u_15915979/5967422

相关文章

  • Go 快速入门指南 - 切片
    概述阅读本小节之前,建议先阅读 数组 小节。​​切片​​ 是对数组的一个连续片段的引用。片段可以是整个数组,也可以是数组的一部分(例如数组的第3个元素到第8个元素......
  • Go 快速入门指南 - 字符切片
    概述建议先阅读 ​​字符串​​, 切片 两个小节。由于字符串不可变,如果每次以 ​​重新赋值​​​ 的方式改变字符串,效率会非常低,这时应该使用 ​​[]byte​​ 类型,[......
  • Go 快速入门指南 - Map
    概述​​Map​​​ 是一种键值对的无序集合,在其他编程语言中也被称为 ​​字典​​​, ​​Hash​​​, ​​关联数组​​。重要的一点是: ​​Map键​​ 的数据类型......
  • Go 快速入门指南 - 有序 Map
    概述​​Map​​​ 的遍历是无序的,这意味着不能依赖遍历的键值顺序。如果想实现Map遍历时顺序永远一致,一个折中的方案时预先给Map的 ​​键​​ 排序,然后根据排序后......
  • Go 快速入门指南 - make 和 new
    概述​​new()​​ 函数为数据类型T分配一块内存,初始化为类型T的零值,返回类型为指向数据的指针,可以用于所有数据类型。​​make()​​​ 函数除了为数据类型T分配内......
  • Go 快速入门指南 - 变长参数和指针参数
    变长参数在函数的最后一个参数的数据类型之前加上省略号 ​​...​​​ ,表示该参数的数据类型是 ​​变长类型​​​,调用该函数时可以传递任意数量 ​​(0-N)​​......
  • Go 快速入门指南 - defer 函数
    概述一个 ​​defer​​ 语句就是一个普通的函数或方法调用。 ​​defer​​ 语句保证了不论是在正常情况下(return返回),还是非正常情况下(发生错误,程序终止),函数......
  • Go 快速入门指南 - panic/recover 函数
    panic​​panic​​​ 会终止程序并退出,因此只有在发生严重的错误时才会使用 ​​panic​​。例子主动触发packagemainfuncmain(){panic("someerror...")}//$go......
  • Go 快速入门指南 - 结构体
    概述​​结构体​​​ 是将零个或多个字段(变量)组合在一起的复合数据类型,类似于面向对象语言中的 ​​对象​​。结构体以及其字段都使用 可见性 规则。语法规则type......
  • Go 快速入门指南 - 嵌套结构体
    概述Go支持将多个结构体通过嵌套的方式,组成一个大的结构体,降低了单个结构体复杂度,同时提高了结构体之间组合的灵活性。例子为了省略篇幅,本小节只使用 ​​字面量​​​ ......