当前位置: 首页 > news >正文

go slice在函数间的传递模式

在 Go 语言中slice 是值传递所有类型都是值传递但修改 slice 的元素可以影响到外部。详细解释1. 值传递的本质当你传递 slice 给函数时传递的是 slice 头的副本。slice 头包含三个字段指向底层数组的指针长度len容量captypesliceHeaderstruct{Datauintptr// 指向底层数组的指针LenintCapint}2. 修改元素 -可以影响外部funcmodifyElement(s[]int){s[0]100// 修改底层数组的元素}funcmain(){nums:[]int{1,2,3}modifyElement(nums)fmt.Println(nums)// [100 2 3] ✅ 外部被影响}原因副本中的Data指针指向同一个底层数组。3. 修改长度/容量 -不能影响外部funcmodifyLen(s[]int){sappend(s,4)// 可能改变 len 和 cap甚至指向新数组s[0]100}funcmain(){nums:[]int{1,2,3}modifyLen(nums)fmt.Println(nums)// [1 2 3] ❌ 外部不受影响}4. 使用指针才能完全修改funcmodifySlice(s*[]int){*sappend(*s,4)// 修改原 slice(*s)[0]100}funcmain(){nums:[]int{1,2,3}modifySlice(nums)fmt.Println(nums)// [100 2 3 4] ✅ 完全受控}总结修改元素✅ 影响外部共享底层数组修改长度/容量❌ 不影响外部副本的 len/cap 独立重新赋值整个 slice❌ 不影响外部副本的 Data 指针改变需要完全修改时使用指针*[]T或返回新 slice这种设计兼顾了性能和安全性是最常见的 Go 语言实践。
http://www.gsyq.cn/news/1383035.html

相关文章:

  • 5分钟快速上手:Highlighter浏览器扩展终极指南 - 免费网页高亮工具
  • 美国海运专线VS空运:哪种跨境物流更适合你的生意? - 恒盛通物流
  • Hermes agent的tools是怎么落地应用的系列
  • 终极抖音下载器完整指南:免费开源工具让你轻松批量下载无水印视频
  • TuxGuitar完整指南:5大核心功能解锁专业吉他谱创作新境界
  • 跨行零基础也能月薪 10k,学会破局方能逆风翻盘
  • AI写代码翻车现场:被MonkeyCode坑惨的3个瞬间
  • 电子电路工程师工作全解析:从原理图到量产的硬核全过程
  • 【2026 收藏版】大模型进阶必备:图 RAG(Graph RAG)原理 + 三种实现 + 电商实战,小白也能看懂
  • 5个步骤快速上手ParsecVDisplay:Windows虚拟显示器的终极指南
  • 告别‘盲测’:用Playwright录屏和截图,让你的Allure报告会‘说话’
  • 1990-2025年 省市区县三级土地利用面积土地覆盖面积数据 CSV+SHP
  • C++ STL源码阅读(持续更新)
  • 想学好渗透?23 个黑客必备攻防靶场合集
  • 英文初稿查AI率、降ai率,这几个宝藏网站直接搞定! - 殷念写论文
  • 掌握SEO从零起步的实用技巧,助你提升网站流量与搜索排名
  • Bedrock Prompt Optimization 进阶版:5 个模型同时对比,一条 Prompt 自动调到能打
  • 超声波液位计厂家排行榜:2026年国产十大品牌深度评测与选型指南 - 仪表品牌榜
  • 2026亲测:专业降AI率平台这款就对了一键达标
  • Recuva真的能恢复被‘文件粉碎’的数据吗?实测腾讯管家、火绒删除后的恢复效果
  • 用python进行简单计算
  • 基于Arduino的MPPT太阳能充电控制器:从Buck电路到算法实现全解析
  • BetterJoy终极指南:3分钟让你的Switch手柄变身PC游戏神器
  • NS-USBLoader终极指南:一站式Switch文件传输与RCM注入解决方案
  • 从XP盗版泛滥到Win11强制联网:聊聊微软这二十年是怎么用KMS等机制‘围剿’盗版的
  • 主流源代码管理工具介绍
  • 3个专业技巧彻底解决macOS升级后鼠标功能失效问题
  • Source Han Serif CN 开源中文字体技术应用指南
  • 告别调试器:将ZYNQ WebServer工程固化为BOOT.bin,实现真正上电即用
  • Simulink模型测试踩坑实录:Test Manager里那些容易忽略的配置项(比如Comparison勾选)