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

golang如何理解值类型和引用类型_golang值类型与引用类型区别详解

<p>Go所有传参均为值传递,但“值”取决于类型底层:基础类型传数据副本,slice/map/chan传含指针的header副本,修改元素会影响原变量;需改变量本身(如重置slice header)时才必须传* T。</p>Go 里所有传参都是值传递,但“值”是什么得看类型底层Go 没有引用传递,只有值传递。区别在于:传的是「数据本身」还是「指向数据的结构体副本」。比如 int 传的是整个整数拷贝;而 []int 传的是一个含 ptr、len、cap 的 header 结构体——这个结构体是拷贝的,但它里面的 ptr 仍指向原底层数组。修改 slice 元素(如 s[0] = 100)会影响原 slice,因为 ptr 没变对 slice 做 append 后若触发扩容,新 slice 的 ptr 可能指向新地址,原 slice 完全不受影响map 和 chan 类似:传参拷贝的是 header(内部含指针),增删改 key / 发送接收都会作用到同一底层结构怎么快速判断一个类型传参后改不改原变量不用背分类表,动手试两行代码最准:写个函数,参数用该类型,函数内修改它(不是改指针,是改内容,比如 arr[0] = 99 或 m["k"] = 1)调用后立刻检查原变量是否变化 —— 变了就是“表现像引用”,没变就是纯值拷贝注意避开陷阱:string 看似像引用(不可变),但其实是只读的值类型;[3]int 是值类型,[]int 才是引用行为什么时候必须传 *T 而不是 T当你需要在函数内修改「变量本身的值」,而不仅是它指向的内容时,就必须传指针。想让函数改变调用方的 slice header(比如让它指向新数组),必须传 *[]int想让函数把 map 置为 nil 或换一个新的 make(map[string]int),也得传 *map[string]int结构体很大(比如含大数组字段)时,传 *T 避免整块内存拷贝,这是性能刚需,不是语义选择自定义 struct 是值类型还是引用类型取决于它有没有指针字段或嵌套引用类型字段。Go 不看名字,看内存布局。 Vozo Vozo是一款强大的AI视频编辑工具,可以帮助用户轻松重写、配音和编辑视频。

http://www.jsqmd.com/news/615880/

相关文章:

  • 2026年果汁码垛机选型指南:饮料装箱机、饮料输送线、果汁包装机、果汁装箱机、果汁输送线、热收缩膜包装机、瓶装水包装机选择指南 - 优质品牌商家
  • 广州邮科选型指南:挑选可调电源必须关注的四个核心参数
  • PbS QDs‑AuNPs,PbS量子点修饰纳米金,CdS QDs‑AuNPs,CdS量子点修饰金纳米颗粒,性状与结构特点
  • 一文学习 工作流开发 BPMN、 Flowable参
  • 遇到一个口头机遇的答辩准备6
  • 一天一个开源项目(第69篇):second-brain-skills - 把 Claude Code 变成知识工作专家的 Skill 工具集
  • Scikit-learn怎么实现协同过滤推荐_利用NearestNeighbors找相似用户
  • 招投标审查效率低、风险高?这款AI系统直接解决核心痛点
  • 【C++可变模板参数】
  • 【限时解密】某TOP3电商平台订单测试SOP文档(含23个自动化断言脚本+Postman集合+Mock规则库)
  • 2026冰雹车凹陷修复技术解析:从损伤评估到合规修复指南 - 优质品牌商家
  • 西门子1200 PLC的MODBUS_RTU轮询程序那些事儿
  • LeetCode 删除无效的括号:python 题解匆
  • 【Scala PyTorch深度学习】PyTorch On Scala系列课程 第一章 03 :张量基本操作【AI Infra 3.0】[PyTorch Scala 硕士研一课程]
  • 芯谷科技—D384X 系列电流模式PWM控制器
  • Zookeeper分布式协调
  • 智能家居中枢:OpenClaw+千问3.5-27B解析语音指令
  • Windows下OpenClaw安装指南:Qwen2.5-VL-7B图文模型一键调用
  • 支付签名验签失效,资金秒盗!PHP接口安全防护全链路拆解,从OpenSSL到HMAC-SHA256
  • 2026年SOD试剂盒市场:这些公司值得深入了解,elisa试剂盒使用说明书/白介素检测试剂盒,sod试剂盒品牌找哪家 - 品牌推荐师
  • Java应用转GraalVM静态镜像后GC停顿归零?不!真实生产数据揭示:未配置--enable-http、--enable-https导致堆外内存泄漏的致命陷阱
  • PHP微服务性能跃升47%的秘密:Swoole 5.0新特性深度适配教程(仅限首批内测开发者掌握)
  • 3小时搞定OpenClaw飞书机器人:Phi-3-mini-128k-instruct对话集成
  • OpenClaw学习路径:从Qwen3.5-9B-AWQ-4bit入门到开发复杂自动化流
  • 这本《大语言模型》直接封神,清华张亚勤盛赞“入门圣经”,A100集群训练日志全公开!
  • OpenClaw+Phi-3-vision-128k-instruct智能剪辑:视频关键帧提取与摘要生成
  • 通过 GitHub Actions 实现简单模型重新训练自动化
  • AI开发-python-langchain框架(--AI 直接生成并执行 Python 代码 )友
  • 小程序设置底部tabbar
  • OpenClaw自动化测试:Qwen2.5-VL-7B多模态任务稳定性验证