1.4 Go 数组

一、数组

1、简介

数组是切片的基础

数组是一个固定长度、由相同类型元素组成的集合。在 Go 语言中,数组的长度是类型的一部分,因此 [5]int 和 [10]int 是两种不同的类型。数组的大小在声明时确定,且不可更改。

简单来说,数组就像是一个有序的容器,用来存放同一类型的多个元素。就像你在一个盒子里按顺序排列多个相同的物品,每个物品都有一个序号可以标识。因为数组通常包含多个元素,所以命名时可以使用复数形式,比如 books 、dogs、foods等。

在现实生活中,数组无处不在。例如,在书架上,按顺序排列的书籍就像一个数组,每本书都有一个位置编号。你可以通过编号来找到某一本书,类似地,通过数组的索引来访问其中的元素。

2、数组定义

2.1、定义数组,然后进行赋值操作

复制代码
package main

import "fmt"

var tp1 [5]string
// tp1 = [5]string{"北京", "上海", "深圳", "广州", "杭州"}  //错误赋值。

func main() {
	tp1 = [5]string{"北京", "上海", "深圳", "广州", "杭州"}  //Go 不允许在函数体外部直接对变量进行赋值。你在全局范围内声明了数组 tp1,然后尝试在全局范围内对其进行赋值,但 Go 语言要求对变量的赋值只能在函数体内进行。
	fmt.Println(tp1)
}

2.2、定义变量时进行赋值

Go 复制代码
package main

import "fmt"

// var tp1 [5]string
var tp2 = [5]int{1, 2, 3, 4, 5} //定义并进行赋值
func main() {
	// tp1 = [5]string{"北京", "上海", "深圳", "广州", "杭州"}
	// fmt.Println(tp1)
	fmt.Println(tp2)

}

​

2.3、短变量方式赋值

Go 复制代码
package main

import "fmt"
func main() {

	tp3 := [5]int{1, 2, 3, 4, 15}
	fmt.Println(tp3)

}

2.4、一维数组案例

存储多个相同类型的元素,可以通过一个索引来访问。

Go 复制代码
package main

import "fmt"

var deploy = [5]string{"deploy", "update", "remove", "back", "exit"}


func main() {
    fmt.Println("请输入选项进行操作:")
    for i, v := range deploy {
        fmt.Println(i+1, v)
    }
    
}

2.5、二维数组

包含多个一维数组的数组,通常被用来表示矩阵或表格数据。可以通过两个索引来访问元素,第一个索引表示行,第二个索引表示列。

Go 复制代码
package main

import "fmt"

func main() {
	// 定义并初始化一个 2x3 的二维数组
	var matrix = [2][3]int{
		{1, 2, 3},  // 第一行
		{4, 5, 6},  // 第二行
	}

	// 访问并打印二维数组的每个元素
	for i := 0; i < len(matrix); i++ {
		for j := 0; j < len(matrix[i]); j++ {
			fmt.Printf("matrix[%d][%d] = %d\n", i, j, matrix[i][j])
		}
	}
}

二、访问数组方法

在Go语言中,数组中的第一个元素的索引是0,第二个索引是1。第三个索引是2以此类推

1、获取数组中第二个元素 上海

复制代码
package main

import "fmt"
func main() {
	tp4 := [3]string{"北京", "上海", "深圳"}
	message := "选择的城市是:" + tp4[1]
	fmt.Println(message)

}

2、遍历数组

在日常生活中经常需要遍历数组来做相同的操作,例如旅游选择的城市。

Go语言中使用自带的for range 来循环遍历数组中的内容

  • 第一个变量i 是元素所在数组中的索引位置

  • 第二个变量v是元素本身

    复制代码
      tp5 := [5]string{"北京", "上海", "深圳", "杭州", "深圳"}
      for i, v := range tp5 {
      	fmt.Println(i, v)
      }

    }

3、修改数组中的元素

修改数组中的元素,需要现制定属主名和要修改的元素索引,在指定元素的新值

复制代码
package main
import "fmt"
var tp7 = [3]int{100, 200, 300}
func main() {

	tp6 := [2]int{1, 2}
	tp6[0] = 100
	fmt.Println(tp6[0])
	tp7[0] = 1024
	fmt.Println(tp7)

}

三、数组使用注意事项

使用列表时避免索引错误

数组中有两个元素访问的索引是2,超出了数组的范围

复制代码
	tp8 := [2]int{1, 2}
	fmt.Println(tp8[2])

command-line-arguments

./main.go:29:18: invalid argument: index 2 out of bounds [0:2]

相关推荐
ii_best3 小时前
「安卓开发辅助工具按键精灵」xml全分辨率插件jsd插件脚本教程
android·xml·开发语言·编辑器·安卓
李慕婉学姐3 小时前
【开题答辩过程】以《基于python的气象灾害数据分析与可视化系统》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
开发语言·python·数据分析
一起养小猫3 小时前
《Java数据结构与算法》第四篇(三)二叉树遍历详解_CSDN文章
java·开发语言·数据结构
消失的旧时光-19433 小时前
从 Android 回调到 C 接口:函数指针 + void* self 的一次彻底理解
android·c语言·开发语言
我命由我123453 小时前
Python Flask 开发问题:ImportError: cannot import name ‘escape‘ from ‘flask‘
服务器·开发语言·后端·python·flask·学习方法·python3.11
elangyipi1233 小时前
JavaScript 高级错误处理与 Chrome 调试艺术
开发语言·javascript·chrome
猫头虎3 小时前
IntelliJ IDEA 2025.3 最新变化:值得更新吗?
java·开发语言·ide·人工智能·intellij-idea·idea·gitcode
shandianchengzi3 小时前
【记录】Rust|Rust开发相关的7个VSCode插件的介绍和推荐指数(2025年)
开发语言·vscode·rust
爱吃烤鸡翅的酸菜鱼3 小时前
Spring Boot 注解全栈指南:涵盖 Bean 注册、配置加载、请求映射、事务控制、数据校验等一网打尽
java·开发语言·spring boot·后端·spring
有味道的男人3 小时前
淘宝图片搜索(拍立淘)+ 店铺全商品爬虫 深度实战指南(Python)
开发语言·爬虫·python