Golang 中 range 的使用方法及注意事项

马谦马谦马谦 Golang1 8841字数 437阅读 1 分 27 秒阅读模式

一、用法

range 类似迭代器,可以遍历数组,字符串,map 等等,对象的不同,返回的结果也不同。

结果:

二、注意事项

1. range 会复制对象,而不是不是直接在原对象上操作。

示例一:

示例二:

2. 使用 range 迭代遍历引用类型时,底层的数据不会被复制:

结果:

因为切片的内部结构为 struct slice{*point, len, cap} 。

数据部分是一个指针,指向地址,复制对象的时候只是把指针的值复制了,而不是重新拷贝一块新的内存再把值放进去,所以修改的时候还是修改的原来的值,和 C++里的浅拷贝一样。

  最后更新:2017-12-5
马谦马谦马谦
  • 本文由 马谦马谦马谦 发表于 2017 年 8 月 20 日 18:35:41
  • 转载请务必保留本文链接:https://www.dyxmq.cn/program/code/golang/golang-range.html
解决gvm工具无法下载安装包的问题 Golang

解决 gvm 工具无法下载安装包的问题

GVM(Go Version Manager) 是一款用于管理和切换不同 Go 语言版本的工具。它允许用户在同一台计算机上轻松安装、使用和管理多个 Go 版本,同时还能确保项目之间的依赖关系井然有序。 GVM 的主...
国内几个优质的Go Module代理仓库服务 Golang

国内几个优质的 Go Module 代理仓库服务

一、简介 go module 公共代理仓库,代理并缓存 go 模块。你可以利用该代理来避免 DNS 污染导致的模块拉取缓慢或失败的问题,加速你的构建。 简单来说就是国内访问被墙,go get 无法在线获取到仓库,...
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证