编程笔记 Golang基础 022 数组

2024-02-24 21:52

本文主要是介绍编程笔记 Golang基础 022 数组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

编程笔记 Golang基础 022 数组

  • 一、数组定义和初始化
  • 二、访问数组元素
  • 三、遍历数组
  • 四、数组作为参数
  • 六、特点
  • 七、注意事项

在Go语言中,数组是一种基本的数据结构,用于存储相同类型且长度固定的元素序列。

一、数组定义和初始化

// 声明并初始化一个整数类型的数组,包含3个元素
var numbers [3]int = [3]int{1, 2, 3}// 或者简写形式(编译器会根据初始值数量推断数组长度)
var numbers2 = [3]int{4, 5, 6}// 同时声明但不初始化
var uninitialized [5]int// 在函数内部声明并初始化数组
func initArray() {var arr [4]stringarr[0] = "apple"arr[1] = "banana"arr[2] = "cherry"arr[3] = "date" // 不需要显式为arr[3]赋值,因为Go会自动为剩余位置填充零值
}

二、访问数组元素

package mainimport "fmt"func main() {fruits := [5]string{"apple", "banana", "cherry", "date", "elderberry"}// 访问数组元素fmt.Println(fruits[0]) // 输出: applefmt.Println(fruits[2]) // 输出: cherry// 修改数组元素fruits[1] = "mango"fmt.Println(fruits)
}

三、遍历数组

package mainimport "fmt"func main() {daysOfWeek := [7]string{"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}// 使用for循环遍历数组for index, day := range daysOfWeek {fmt.Printf("Day %d: %s\n", index+1, day)}
}

四、数组作为参数

package mainimport "fmt"// 定义一个接受整数数组的函数
func sum(numbers [3]int) int {total := 0for _, num := range numbers {total += num}return total
}func main() {nums := [3]int{10, 20, 30}result := sum(nums)fmt.Println("Sum of array:", result)
}

六、特点

  1. 存储和访问效率:数组的元素在内存中是连续存放的,因此可以通过索引(下标)快速访问和修改元素,对于随机访问操作具有较高的性能。

  2. 简单直观:数组提供了一种直接的方式来组织和管理同类型的数据集合,方便进行批量处理或迭代操作。

  3. 类型安全:每个数组都有严格的类型定义,只能存放指定类型的数据,确保了程序的安全性和一致性。

  4. 编程教育与理解基础数据结构:理解和掌握数组是学习更复杂数据结构(如切片、链表等)的基础,有助于对底层数据管理有深入的理解。

  5. 系统资源分配清晰:由于数组大小固定,编译时即可知道所需内存空间,这对于编写高效率且资源可控的程序十分重要。

七、注意事项

  1. 固定长度:在Go语言中,数组的长度是其类型的一部分,并且一旦声明后不可改变,这意味着你不能动态地扩展或收缩数组的容量。

  2. 值语义:数组是值类型,当数组作为函数参数传递时,会复制整个数组内容到新的内存空间。这意味着如果数组很大,可能会导致额外的性能开销。

  3. 默认零值:未初始化的数组元素将被赋予该类型对应的零值,例如整数为0,字符串为空字符串,自定义类型为零值状态。

  4. 不适合插入删除:因为数组的元素存储是连续的,所以在数组中间插入或删除元素会导致所有后续元素需要移动位置,这在实际使用中并不高效。

  5. 实用场景有限:虽然数组是基本的数据结构,但在许多实际应用中,开发者更多地倾向于使用切片(slices),它们基于数组实现,但提供了动态伸缩的能力,更加灵活。

  6. 语法细节:数组的声明通常包含数组长度和元素类型,例如 var arr [5]int 表示一个长度为5的整数数组。

  7. 索引越界检查:Go语言运行时不会自动检查数组索引是否越界,超出数组长度的索引会导致程序崩溃。因此,在使用数组时需特别注意边界问题。

这篇关于编程笔记 Golang基础 022 数组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/743482

相关文章

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

Java数组初始化的五种方式

《Java数组初始化的五种方式》数组是Java中最基础且常用的数据结构之一,其初始化方式多样且各具特点,本文详细讲解Java数组初始化的五种方式,分析其适用场景、优劣势对比及注意事项,帮助避免常见陷阱... 目录1. 静态初始化:简洁但固定代码示例核心特点适用场景注意事项2. 动态初始化:灵活但需手动管理代

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.