全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

如何使用Golang实现指针和数组遍历_通过引用修改数组元素

Go中数组是值类型,修改原数组必须传入指向数组的指针([N]T);通过ptr解引用后遍历并索引修改,如(ptr)[i] = 2;切片虽可修改底层数组但语义不同,不绑定具体数组。

在 Go 语言中,数组是值类型,直接传递或赋值会复制整个数组;而指针可以让我们通过地址操作原始数据,实现“通过引用修改数组元素”的效果。关键在于:要修改原数组,必须传入指向数组的指针(如 *[3]int),而非数组本身或切片。

理解 Go 中数组的值语义

Go 的数组是固定长度、值类型。这意味着:

  • 赋值 a := b(其中 a、b 是同类型数组)会复制所有元素;
  • 函数传参时,func f(arr [3]int) 接收的是副本,修改不影响原数组;
  • 只有显式使用指针(*[N]T)才能真正修改调用方的数组内存。

使用数组指针遍历并修改元素

声明指向数组的指针后,需用 *ptr 解引用得到原数组,再通过索引修改:

func doubleArray(ptr *[3]int) {
    for i := range *ptr {
        (*ptr)[i] *= 2
    }
}

func main() { arr := [3]int{1, 2, 3} doubleArray(&arr) // 传入地址 fmt.Println(arr) // 输出 [2 4 6] }

注意:range *ptr 遍历的是解引用后的数组;(*ptr)[i] 是必须加括号的,因为 *ptr[i] 会被解析为 *(ptr[i])(错误)。

对比:切片方式更常用但语义不同

虽然切片([]int)也能“修改底层数组”,但它不是数组指针:

  • 切片本身是结构体(含指针、长度、容量),传参时复制的是这个结构体,但其内部指针仍指向原底层数组;
  • 因此 func f(s []int) { s[0] = 99 } 能修改原底层数组内容(前提是未扩容);
  • 但切片无法保证操作的是某个具体数组变量(例如长度不匹配、扩容后指向新内存),而 *[N]T 是严格绑定到特定数组的。

安全遍历指针数组的常见写法

为避免硬编码长度,可结合 len 和类型推导:

func incrementAll(ptr *[5]int) {
    n := len(*ptr)
    for i := 0; i < n; i++ {
        (*ptr)[i]++
    }
}

也可用 for i := range *ptr,它自动基于数组长度迭代,更简洁且不易越界。

不复杂但容易忽略:Go 没有隐式引用传递,想改原数组,& 和 * 缺一不可。


# go  # golang  # 编码  # ai  # for  # 结构体  # int  # 指针  # 值类型  # 引用传递  # 切片  # len  # 的是  # 遍历  # 绑定  # 让我们  # 也能  # 而非  # 但它  # 但其  # 关键在于  # 为避免 


相关文章: 北京营销型网站制作公司,可以用python做一个营销推广网站吗?  代刷网站制作软件,别人代刷火车票靠谱吗?  北京的网站制作公司有哪些,哪个视频网站最好?  网站制作报价单模板图片,小松挖机官方网站报价?  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  宝塔面板创建网站无法访问?如何快速排查修复?  网站制作员失业,怎样查看自己网站的注册者?  婚礼视频制作网站,学习*后期制作的网站有哪些?  如何用西部建站助手快速创建专业网站?  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  如何在IIS中新建站点并解决端口绑定冲突?  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  动图在线制作网站有哪些,滑动动图图集怎么做?  南京网站制作费用,南京远驱官方网站?  建站之星免费模板:自助建站系统与智能响应式一键生成  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  如何通过服务器快速搭建网站?完整步骤解析  建站为何优先选择香港服务器?  建站之星安装后如何自定义网站颜色与字体?  孙琪峥织梦建站教程如何优化数据库安全?  高端建站如何打造兼具美学与转化的品牌官网?  建站主机默认首页配置指南:核心功能与访问路径优化  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  建站之星备案是否影响网站上线时间?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  如何自定义建站之星网站的导航菜单样式?  个人网站制作流程图片大全,个人网站如何注销?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  建站主机类型有哪些?如何正确选型  如何用5美元大硬盘VPS安全高效搭建个人网站?  已有域名和空间,如何快速搭建网站?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  建站之星后台管理:高效配置与模板优化提升用户体验  如何在Ubuntu系统下快速搭建WordPress个人网站?  公司网站制作价格怎么算,公司办个官网需要多少钱?  如何配置WinSCP新建站点的密钥验证步骤?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  如何选择适配移动端的WAP自助建站平台?  如何在IIS服务器上快速部署高效网站?  如何在建站主机中优化服务器配置?  b2c电商网站制作流程,b2c水平综合的电商平台?  大连网站设计制作招聘信息,大连投诉网站有哪些?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  ui设计制作网站有哪些,手机UI设计网址吗?  太平洋网站制作公司,网络用语太平洋是什么意思?  如何用AWS免费套餐快速搭建高效网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。