终于掌握Go语言数组用法 数组操作看这里

简介: 终于掌握Go语言数组用法 数组操作看这里

数组是编程语言中的一种基础数据结构,用于存储一组同类型数据。Go 语言中也内置了对数组的支持,并提供了许多操作函数。合理使用数组可以在程序中保存和操作同类型数据。

本文将详细介绍 Go 语言数组的定义方式、初始化、常见操作、多维数组以及与切片的区别,并辅以完整示例代码,以便读者全面理解 Go 语言中的数组类型。

1

 

一、数组定义

可以使用以下语法定义数组类型:

var arr [n]type

其中 n 表示数组长度,type 表示元素类型。

例如定义一个长度为 5 的字符串数组:

var array [5]string

数组长度必须是常量,不能使用变量。

2

 

二、数组初始化

定义数组时可以直接初始化:

arr := [3]int{1, 2, 3}

如果不给出长度,Go 可以根据元素个数确定长度。

3

 

三、访问元素

可以使用索引下标访问数组元素,索引从 0 开始:

arr[0] = 5
value := arr[3]

    4

     

    四、修改数组

    数组是值类型,赋值和传参会复制整个数组。因此无法直接修改数组:

    arr2 := arr1 //复制数组
    arr2[0] = 1 //无法改变arr1

    只能直接修改索引位置的值来变更数组。

    5

     

    五、数组常见操作

    数组支持长度计算 len、迭代、切片、排序等:

    l := len(arr) //数组长度 
    for i, v := range arr {
      //迭代数组
    }
    sort.Ints(arr) //排序

    内置函数支持多种数组操作。

    6

     

    六、多维数组

    Go 语言支持多维数组,最常见的是二维数组:

    var grid [2][3]int
    grid[0][1] = 5

    可以表示表格、图像等二维数据。

    7

     

    七、数组 vs 切片

    数组定长不可变,切片长度可变。一般更多使用切片来动态存储数据。

    8

     

    总结

    数组是基础的数据组织结构,Go 语言对数组提供了原生支持。合理正确使用数组可以解决一些问题,但更多会用到切片。


    目录
    相关文章
    |
    4天前
    |
    存储 Go
    Go 语言入门指南:切片
    Golang中的切片(Slice)是基于数组的动态序列,支持变长操作。它由指针、长度和容量三部分组成,底层引用一个连续的数组片段。切片提供灵活的增减元素功能,语法形式为`[]T`,其中T为元素类型。相比固定长度的数组,切片更常用,允许动态调整大小,并且多个切片可以共享同一底层数组。通过内置的`make`函数可创建指定长度和容量的切片。需要注意的是,切片不能直接比较,只能与`nil`比较,且空切片的长度为0。
    Go 语言入门指南:切片
    |
    7天前
    |
    算法 安全 Go
    公司局域网管理系统里的 Go 语言 Bloom Filter 算法,太值得深挖了
    本文探讨了如何利用 Go 语言中的 Bloom Filter 算法提升公司局域网管理系统的性能。Bloom Filter 是一种高效的空间节省型数据结构,适用于快速判断元素是否存在于集合中。文中通过具体代码示例展示了如何在 Go 中实现 Bloom Filter,并应用于局域网的 IP 访问控制,显著提高系统响应速度和安全性。随着网络规模扩大和技术进步,持续优化算法和结合其他安全技术将是企业维持网络竞争力的关键。
    24 2
    公司局域网管理系统里的 Go 语言 Bloom Filter 算法,太值得深挖了
    |
    3天前
    |
    开发框架 前端开发 Go
    eino — 基于go语言的大模型应用开发框架(二)
    本文介绍了如何使用Eino框架实现一个基本的LLM(大语言模型)应用。Eino中的`ChatModel`接口提供了与不同大模型服务(如OpenAI、Ollama等)交互的统一方式,支持生成完整响应、流式响应和绑定工具等功能。`Generate`方法用于生成完整的模型响应,`Stream`方法以流式方式返回结果,`BindTools`方法为模型绑定工具。此外,还介绍了通过`Option`模式配置模型参数及模板功能,支持基于前端和用户自定义的角色及Prompt。目前主要聚焦于`ChatModel`的`Generate`方法,后续将继续深入学习。
    73 6
    |
    14天前
    |
    监控 Linux PHP
    【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
    【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
    65 20
    |
    4天前
    |
    存储 开发框架 Devops
    eino — 基于go语言的大模型应用开发框架(一)
    Eino 是一个受开源社区优秀LLM应用开发框架(如LangChain和LlamaIndex)启发的Go语言框架,强调简洁性、可扩展性和可靠性。它提供了易于复用的组件、强大的编排框架、简洁明了的API、最佳实践集合及实用的DevOps工具,支持快速构建和部署LLM应用。Eino不仅兼容多种模型库(如OpenAI、Ollama、Ark),还提供详细的官方文档和活跃的社区支持,便于开发者上手使用。
    52 6
    |
    4天前
    |
    存储 算法 Go
    Go语言实战:错误处理和panic_recover之自定义错误类型
    本文深入探讨了Go语言中的错误处理和panic/recover机制,涵盖错误处理的基本概念、自定义错误类型的定义、panic和recover的工作原理及应用场景。通过具体代码示例介绍了如何定义自定义错误类型、检查和处理错误值,并使用panic和recover处理运行时错误。文章还讨论了错误处理在实际开发中的应用,如网络编程、文件操作和并发编程,并推荐了一些学习资源。最后展望了未来Go语言在错误处理方面的优化方向。
    |
    4天前
    |
    网络协议 算法 安全
    Go语言的网络编程与TCP_UDP
    Go语言由Google开发,旨在简单、高效和可扩展。本文深入探讨Go语言的网络编程,涵盖TCP/UDP的基本概念、核心算法(如滑动窗口、流量控制等)、最佳实践及应用场景。通过代码示例展示了TCP和UDP的实现,并讨论了其在HTTP、DNS等协议中的应用。最后,总结了Go语言网络编程的未来发展趋势与挑战,推荐了相关工具和资源。
    |
    12天前
    |
    存储 监控 算法
    探秘员工泄密行为防线:基于Go语言的布隆过滤器算法解析
    在信息爆炸时代,员工泄密行为对企业构成重大威胁。本文聚焦布隆过滤器(Bloom Filter)这一高效数据结构,结合Go语言实现算法,帮助企业识别和预防泄密风险。通过构建正常操作“指纹库”,实时监测员工操作,快速筛查可疑行为。示例代码展示了如何利用布隆过滤器检测异常操作,并提出优化建议,如调整参数、结合日志分析系统等,全方位筑牢企业信息安全防线,守护核心竞争力。
    |
    1天前
    |
    存储 算法 安全
    基于 Go 语言的公司内网管理软件哈希表算法深度解析与研究
    在数字化办公中,公司内网管理软件通过哈希表算法保障信息安全与高效管理。哈希表基于键值对存储和查找,如用户登录验证、设备信息管理和文件权限控制等场景,Go语言实现的哈希表能快速验证用户信息,提升管理效率,确保网络稳定运行。
    10 0
    |
    19天前
    |
    监控 关系型数据库 MySQL
    【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
    【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
    28 0

    热门文章

    最新文章