6.1 Go 数组


在这里插入图片描述
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
在这里插入图片描述

  • 推荐:「stormsha的主页」👈,持续学习,不断总结,共同进步,为了踏实,做好当下事儿~

  • 专栏导航

    • Python系列: Python面试题合集,剑指大厂
    • Git系列: Git操作技巧
    • GO系列: 记录博主学习GO语言的笔记,该笔记专栏尽量写的试用所有入门GO语言的初学者
    • 数据库系列: 详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 运维系列: 总结好用的命令,高效开发
    • 算法与数据结构系列: 总结数据结构和算法,不同类型针对性训练,提升编程思维

    非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

    💖The Start💖点点关注,收藏不迷路💖

    📒文章目录

      • 一、Go数组基础
        • 1. 定义与初始化
        • 2. 访问与赋值
      • 二、数组与切片的区别
        • 1. 长度
        • 2. 可变性
        • 3. 性能
      • 三、数组的使用技巧
        • 1. 多维数组
        • 2. 循环遍历
        • 3. 并发访问
      • 四、高级应用:数组与函数
        • 1. 作为函数参数
        • 2. 作为函数返回值
      • 五、性能优化
        • 1. 避免不必要的复制
        • 2. 使用切片


内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容

Go语言以其简洁、高效和并发支持而广受开发者欢迎。在Go中,数组是一种基础且强大的数据结构,它允许我们存储固定长度的同类型元素集合。对于中高级开发者而言,掌握数组的使用技巧是提升编程效率和性能的关键。本文将深入探讨Go数组的特性、使用技巧以及一些高级应用场景。

一、Go数组基础

1. 定义与初始化

在Go中,数组是一种值类型,具有固定的长度和类型。定义一个数组的基本语法如下:

var arr [5]int

这行代码定义了一个名为arr的数组,它可以存储5个整数。数组的初始化可以通过多种方式完成:

// 使用数组字面量初始化
var arr = [5]int{1, 2, 3, 4, 5}

// 让编译器自动推断数组长度
var arr = [...]int{1, 2, 3, 4, 5}

// 使用make初始化数组
var arr = make([]int, 5)

2. 访问与赋值

数组元素的访问是通过索引进行的,索引从0开始:

fmt.Println(arr[0]) // 输出第一个元素
arr[1] = 10        // 给第二个元素赋值

二、数组与切片的区别

虽然数组和切片在功能上相似,但它们在内部实现和使用上存在一些关键差异:

1. 长度

数组的长度在定义时确定,并且不可改变。而切片的长度是动态的,可以根据需要进行调整。

2. 可变性

数组是值类型,当数组被赋值或作为参数传递给函数时,会复制整个数组。切片则是引用类型,对切片的修改会影响到原始的数组。

3. 性能

由于切片是引用类型,它们在某些情况下可以提供更好的性能,尤其是在处理大量数据时。

三、数组的使用技巧

1. 多维数组

Go支持多维数组,这对于处理矩阵或二维数据非常有用:

var matrix [3][4]int

2. 循环遍历

使用for循环遍历数组是一种常见的操作:

for i := 0; i < len(arr); i++ {
    fmt.Println(arr[i])
}

3. 并发访问

由于数组是值类型,它们不是线程安全的。如果需要在并发环境中使用数组,可以考虑使用锁或其他同步机制。

四、高级应用:数组与函数

1. 作为函数参数

数组可以作为参数传递给函数,但由于它是值类型,每次传递都会复制整个数组:

func sum(arr [5]int) int {
    var total int
    for _, value := range arr {
        total += value
    }
    return total
}

2. 作为函数返回值

数组也可以作为函数的返回值,这同样涉及到数组的复制:

func createArray() [5]int {
    var arr [5]int
    for i := range arr {
        arr[i] = i * 2
    }
    return arr
}

五、性能优化

1. 避免不必要的复制

由于数组是值类型,每次赋值或函数调用都可能涉及数组的复制。在性能敏感的应用中,应尽量避免不必要的数组复制。

2. 使用切片

在需要动态调整数组大小时,考虑使用切片代替数组。切片提供了更多的灵活性,并且可以减少内存分配和复制的开销。


🔥🔥🔥道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

💖The End💖点点关注,收藏不迷路💖

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/659207.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud Alibaba-06-Sleuth链路追踪

Lison <dreamlison163.com>, v1.0.0, 2024.4.03 Spring Cloud Alibaba-06-Sleuth链路追踪 文章目录 Spring Cloud Alibaba-06-Sleuth链路追踪为什么使用链路追踪常见链路追踪解决方案Sleuth概述概述Sleuth术语 Sleuth Zipkin 原理Sleuth原理简述Zipkin 原理简述 Sleut…

永恒之蓝(MS17-010)详解

这个漏洞还蛮重要的&#xff0c;尤其在内网渗透和权限提升。 目录 SMB简介 SMB工作原理 永恒之蓝简原理 影响版本 漏洞复现 复现准备 复现过程 修复建议 SMB简介 SMB是一个协议服务器信息块&#xff0c;它是一种客户机/服务器、请求/响应协议&#xff0c;通过SMB协议…

[ARM-2D 专题] 1.开始:基本工程搭建,编译和开发环境配置问题解决

要开始使用ARM-2D&#xff0c;前期两个准备工作需要完成&#xff1a; 一块mcu内核为cortex-M的板子&#xff0c;带显示屏&#xff08;彩色TFT屏&#xff0c;分辨率建议320x240或以上&#xff0c;带TP更佳&#xff09;。基于这个板子可以正常运行的keil MDK的工程。 好了&#…

科技守护,河流水文监测保障水资源安全!

中小河流是城乡水资源的补给&#xff0c;又是不可或缺的排放渠道&#xff0c;维系着城乡水资源的平衡与生态的健康。然而&#xff0c;随着工业化、城市化的快速推进&#xff0c;河流生态环境面临着越来越大的压力。为了有效保护和合理利用河流资源&#xff0c;河流水文监测成为…

vs code 中使用SSH 连接远程的Ubuntu系统

如下图&#xff0c;找到对应的位置 在电脑上找到以下位置 打开配置如下&#xff0c;记住&#xff0c;那个root为你的用户名&#xff0c;这个用户名&#xff0c;具体根据你的用户名来设置&#xff0c;对应的密码就是你登录Ubuntu时的密码 Host root192.168.0.64User rootHostNa…

第98天:权限提升-WIN 全平台MSF 自动化CS 插件化EXP 筛选溢出漏洞

目录 思维导图 前置知识 案例一&#xff1a; Web&Win2008-人工手动&全自动msf-筛选&下载&利用 手动 全自动msf 案例二: Web&Win2019-CS 半自动-反弹&插件&利用 思维导图 前置知识 提权方式&#xff0c;这里讲的是溢出漏洞 windows权限 常…

实时合成 1 秒频订单簿快照:DolphinDB INSIGHT 行情插件与订单簿引擎应用

INSIGHT 是华泰证券依托大数据存储、实时分析等领域的技术积累&#xff0c;整合接入国内多家交易所高频行情数据&#xff0c;为投资者提供集行情接入、推送、回测、计算及分析等功能于一体的行情数据服务解决方案。基于 INSIGHT 官方提供的行情数据服务 C SDK&#xff08;TCP 版…

HTML静态网页成品作业(HTML+CSS)——动漫海贼王介绍网页(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…

超分论文走读

codeFormer 原始动机 高度不确定性&#xff0c;模糊到高清&#xff0c;存在一对多的映射纹理细节丢失人脸身份信息丢失 模型实现 训练VQGAN 从而得到HQ码本空间作为本文的离散人脸先验。为了降低LQ-HQ映射之间的不确定性&#xff0c;我们设计尽量小的码本空间和尽量短的Code…

人人都是产品经理,尼恩产品经理面试宝典(史上最全、定期更新)

《人人都是产品经理&#xff0c;尼恩产品经理面试宝典》&#xff08;史上最全、定期更新&#xff09; 本文版本说明&#xff1a;V1 IT不老新物种 的定义 大龄男IT &#xff1a;APM 架构经理 项目经理 高级开发&#xff0c;没有中年危机 大龄女IT&#xff1a;DPM 产品经理 …

Simulink从0搭建模型07-P8for循环的使用

Simulink从0搭建模型07-P8for循环的使用 今日学习内容1. For Iterator Subsystem模块介绍1.1. 累加器1.2. For Iterator1.3.小结 2. states介绍3. Set next i&#xff08;相当break)学习心得 今日学习内容 b站视频 【Simulink 0基础入门教程 P8 for循环的使用 For Itrator Sub…

Power Bi 自定义进度条,圆角框,矩阵图标的实现

最近项目在做Power BI&#xff0c;我总结了几个常用的自定义样式&#xff0c;分享一下做法。 比如我们要实现如图这样的一个样式&#xff1a; 这包含了一个带文字的自定义进度条&#xff0c;矩阵有树型展开以及图标显示&#xff0c;最外面有圆角框包围。我觉得这几个样式出现…

ATA-2021B高压放大器在锂电池超声检测中的应用

锂电池一种高能量密度的电池&#xff0c;已经广泛应用于可穿戴设备、移动电话、笔记本电脑和电动汽车等领域中。然而&#xff0c;其在使用过程中存在着一定的安全隐患&#xff0c;锂电池内部的化学反应和充放电过程可能会导致电池发热&#xff0c;甚至发生燃烧。Aigtek安泰电子…

走进数字艺术的世界:一种创新的艺术表达方式

进入数字时代&#xff0c;计算机将我们生活的方方面面都进行了转化。当然艺术领域也不例外。随着数字技术和计算机程序的发展和普及&#xff0c;“数字艺术”的概念应试而生。那么&#xff0c;所谓的数字艺术到底是什么呢&#xff1f;数字艺术的作用是什么&#xff1f;新手如何…

在项目中集成Web端数据库操作:推荐工具一览

在项目中集成Web端数据库操作&#xff1a;推荐工具一览 博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍…

基于分块贝叶斯非局部均值优化(OBNLM)的图像去噪算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 块定义与相似度计算 ​4.2 贝叶斯框架下的加权融合 4.3 加权最小均方误差估计 5.完整程序 1.程序功能描述 基于分块贝叶斯非局部均值优化(OBNLM)的图像去噪算法matlab仿真&#xff0c…

CASS+arcgis实现图斑的分割

1、在CASS中将图形绘制好&#xff0c;待分割图形为闭合线&#xff0c;使用线段将其分割成很多块&#xff0c;如下&#xff1a; 2、保存文件。打开arcgisPro&#xff0c;加载dwg图形&#xff0c;如下&#xff1a; 效果如下&#xff1a; 3、分别将面和线导出&#xff0c;如下&…

FL Studio21.2.5中文版电子音乐制作的强大工具

在当今的数字音乐时代&#xff0c;电子音乐已经成为了全球音乐市场中不可或缺的一部分。越来越多的音乐爱好者开始尝试自己动手创作电子音乐&#xff0c;而FL Studio 21中文版正是为他们量身打造的一款强大工具。作为一个音频制作爱好者&#xff0c;我深知一个好的数字音频工作…

LeetCode热题100 Day1——双指针

双指针 移动零11. 盛最多水的容器 移动零 思路&#xff1a; 双指针i&#xff0c;j&#xff0c;j指针遍历数组&#xff0c;i指针存放非0元素。遍历结束后&#xff0c;i指针及其后面的一定是0,就再将空出来的位置设置为0 移动零 class Solution {public void moveZeroes(int[] …

PPT忘记保存?教你如何轻松恢复

在日常办公中PPT文件作为主流文档格式&#xff0c;承载着我们大量的工作成果。然而当不小心误点了“不保存”按钮&#xff0c;或是遭遇软件崩溃等意外情况导致文档丢失时&#xff0c;文件内容是否还能够能恢复&#xff0c;往往成为我们最关心的问题。本文将为您提供五大免费且实…