Go06-数组、切片与 Map
📅 2026/7/16 23:01:08
👁️ 次浏览
第5章数组、切片与 Map5.1 数组数组是固定长度的同类型元素序列。声明与初始化// 声明数组vararr1[5]int// [0 0 0 0 0]// 初始化arr2:[5]int{1,2,3,4,5}// 自动计算长度arr3:[...]int{1,2,3,4,5}// 指定索引初始化arr4:[5]int{1:10,3:30}// [0 10 0 30 0]// 多维数组matrix:[2][3]int{{1,2,3},{4,5,6},}数组操作arr:[5]int{1,2,3,4,5}// 访问元素fmt.Println(arr[0])// 1// 修改元素arr[0]10// 遍历fori,v:rangearr{fmt.Printf(索引: %d, 值: %d\n,i,v)}// 数组长度fmt.Println(len(arr))// 5数组特性// 数组是值类型赋值会复制a:[3]int{1,2,3}b:a b[0]10fmt.Println(a)// [1 2 3] - a 不受影响fmt.Println(b)// [10 2 3]// 比较相同类型数组可以比较a1:[3]int{1,2,3}a2:[3]int{1,2,3}fmt.Println(a1a2)// true5.2 切片切片是动态长度的序列是对底层数组的抽象。创建切片// 使用字面量s1:[]int{1,2,3,4,5}// 使用 make 创建s2:make([]int,5)// 长度为5容量为5s3:make([]int,0,10)// 长度为0容量为10// 从数组/切片创建arr:[5]int{1,2,3,4,5}s4:arr[1:3]// [2 3]s5:arr[:3]// [1 2 3]s6:arr[2:]// [3 4 5]s7:arr[:]// [1 2 3 4 5]切片操作s:[]int{1,2,3,4,5}// 添加元素sappend(s,6)// [1 2 3 4 5 6]sappend(s,7,8,9)// [1 2 3 4 5 6 7 8 9]// 复制切片dst:make([]int,len(s))copy(dst,s)// 删除元素索引2sappend(s[:2],s[3:]...)// 插入元素在索引2处插入10sappend(s[:21],s[2:]...)s[2]10// 切片表达式s[]int{1,2,3,4,5}s2:s[1:3]// [2 3]s3:s[:3]// [1 2 3]s4:s[2:]// [3 4 5]切片长度与容量s:make([]int,5,10)fmt.Println(长度:,len(s))// 5fmt.Println(容量:,cap(s))// 10// 追加元素时容量不足会触发扩容sappend(s,1,2,3)fmt.Println(长度:,len(s))// 8fmt.Println(容量:,cap(s))// 10// 继续追加容量翻倍sappend(s,4,5,6)fmt.Println(长度:,len(s))// 11fmt.Println(容量:,cap(s))// 20切片是引用类型// 切片共享底层数组s1:[]int{1,2,3,4,5}s2:s1[1:3]s2[0]20fmt.Println(s1)// [1 20 3 4 5] - s1 也受影响// 使用 copy 避免共享s3:make([]int,len(s2))copy(s3,s2)s3[0]200fmt.Println(s2)// [20 3] - s2 不受影响5.3 MapMap 是键值对的无序集合。创建 Map// 使用字面量m1:map[string]int{张三:25,李四:30,}// 使用 make 创建m2:make(map[string]int)// 添加元素m2[王五]35// 删除元素delete(m2,王五)// 检查键是否存在age,ok:m2[张三]ifok{fmt.Println(年龄:,age)}// 获取长度fmt.Println(len(m2))Map 遍历m:map[string]int{张三:25,李四:30,王五:35,}// 遍历顺序随机forname,age:rangem{fmt.Printf(%s: %d岁\n,name,age)}// 只遍历键forname:rangem{fmt.Println(name)}// 只遍历值for_,age:rangem{fmt.Println(age)}Map 作为集合// 使用空结构体作为值不占内存set:map[string]struct{}{apple:{},banana:{},cherry:{},}// 添加元素set[date]struct{}{}// 检查元素是否存在if_,exists:set[apple];exists{fmt.Println(apple 存在)}// 删除元素delete(set,banana)Map 作为计数器// 统计字符出现次数funccountChars(sstring)map[rune]int{count:make(map[rune]int)for_,ch:ranges{count[ch]}returncount}result:countChars(hello world)forch,count:rangeresult{fmt.Printf(%c: %d\n,ch,count)}5.4 切片与 Map 的最佳实践预分配内存// 不推荐频繁扩容vars[]intfori:0;i1000;i{sappend(s,i)}// 推荐预分配容量s:make([]int,0,1000)fori:0;i1000;i{sappend(s,i)}// Map 同理m:make(map[string]int,1000)安全地访问 Map// 使用 ok 模式检查键是否存在funcgetAge(mmap[string]int,namestring)(int,bool){age,ok:m[name]returnage,ok}// 使用 sync.Map 并发安全见并发章节5.5 练习实现一个函数合并两个切片并去重实现一个简单的 LRU 缓存使用切片和 map编写程序统计一段文本中每个单词的出现次数实现一个函数将 map 的键和值互换5.6 下一章下一章我们将学习 Go 语言的结构体与接口。
foobox-cn:3分钟打造你的终极foobar2000音乐播放器美化方案 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn
还在为foobar2000那单调乏味的默认界面而烦恼吗?想要一个既美观又实…
📅 2026/7/16 23:00:08
React 高阶组件与 Hooks 的架构取舍:从组合模式到 Render Props 的演进路径
一、问题背景:两种模式的共存与碰撞
React 的组件复用方案经历了三次重要迭代:Mixin(已废弃)→ 高阶组件(HOC)→ Hoo…
📅 2026/7/16 23:00:08
1. IEC 61131-3:2025新版标准的核心变化2025年发布的IEC 61131-3第四版标准,是工业自动化领域十年来最重要的编程语言更新。这次修订不是简单的修补,而是针对现代工业需求的一次全面进化。最直观的变化是终于加入了UTF-8字符串支持,这意味着我…
📅 2026/7/16 23:00:08
Q:社群运营每天想话题、写欢迎语太耗精力,如何利用 Claude 批量生成高质量的私域互动内容?
A: 分项结论 ① 效率与成本数据:传统人工撰写 1 周(5个工作日)的社群话题与欢迎语需耗时约 3.5小时。…
📅 2026/7/16 23:58:32
鸿蒙 ArkTS 实战:Parent Child Sport Challenge 从家庭记录到状态反馈完整解析
前言
Parent Child Sport Challenge 是一个面向 家庭管理与亲子记录 的鸿蒙 ArkTS 小应用。记录家庭条目、站点信息和提醒备注,适合日常家庭复盘。 本文基于 entry/src/ma…
📅 2026/7/16 23:58:32
更多请点击:
https://codechina.net
第一章:Canva AI视频编辑效率革命的底层逻辑与行业影响 Canva 的 AI 视频编辑能力并非简单叠加滤镜或模板,其底层依托多模态大模型对文本、图像、音频和时序动作的联合理解。系统在用户输入提示词&#…
📅 2026/7/16 23:58:32
论文标题:RT-Focuser: A Real-Time Lightweight Model for Edge-side Image Deblurring
作者:Zhuoyu Wu, Wenhui Ou⁴, Qiawei Zheng, Jiayan Yang, Quanjun Wang, Wenqi Fang, Zheng Wang, Yongkui Yang, Heshan Li⁵
机构:中国科学院深圳先…
📅 2026/7/16 23:58:32
更多请点击:
https://intelliparadigm.com
第一章:WPS AI做PPT的核心价值与适用边界 WPS AI集成于WPS Office桌面端与网页版,其PPT生成能力并非替代专业设计师的万能工具,而是聚焦于“高效启动智能协同”的生产力杠杆。它通过自然…
📅 2026/7/16 23:58:32
openEuler/splitter进阶:自定义切片规则优化你的容器镜像 【免费下载链接】splitter Splitting openEuler packages into multiple slices for building distroless images. 项目地址: https://gitcode.com/openeuler/splitter
前往项目官网免费下载…
📅 2026/7/16 23:57:31
1. 项目概述:为什么用遗传算法解5皇后问题,而不是直接回溯?我带过十几届算法课,也给不少初创团队做过AI架构咨询。每次讲到组合优化问题,学生和工程师的第一反应永远是“写个回溯试试”。这没错——55棋盘上找所有合法…
📅 2026/7/16 0:00:02
前几天调试一个简单的电源模块,用到了5.1V稳压管。电路接好,上电测试,万用表一量——输出居然只有4.7V。第一反应是稳压管坏了,换了一个新的,结果还是4.7V。这让我想起很多初学者都会遇到的困惑:明明标称5.…
📅 2026/7/16 0:00:02
1. 项目概述与核心价值 在高速数字系统、通信设备乃至精密测量仪器中,一个稳定、纯净且可精确调控的时钟信号,往往是整个系统稳定运行的“心跳”。无论是确保数据在光纤中无误传输,还是让ADC/DAC芯片精准采样,亦或是让多块FPGA板卡…
📅 2026/7/16 0:00:02
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/15 22:51:06
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/16 21:45:29
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/16 14:13:12
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/15 22:46:06
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/16 4:59:31
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/15 22:51:03