golang range遍历是新创建对象还是创建对象的引用,通俗的讲就是range对range出来的对象的修改会不会同步到被遍历的那个数组。先看如下代码:

package main

import (
"fmt"
) func main() {
// int型数组测试
arr := []int{, , , , }
fmt.Println(arr)
for _, d := range arr {
d =
if d == { // 忽略,防止报not used错误
}
}
fmt.Println(arr) // string类型数组测试
arr2 := []string{"aaaa", "aaa"}
fmt.Println(arr2)
for _, d := range arr2 {
d = "bbbb"
if d == "" { // 忽略,防止报not used错误
}
}
fmt.Println(arr2) // map数组测试
arr3 := []map[string]string{{"": ""}, {"": ""}}
fmt.Println(arr3)
for _, item := range arr3 {
item[""] = ""
item[""] = ""
}
fmt.Println(arr3)
}

然后运行结果如下:

[1 2 3 4 5]

[1 2 3 4 5]

[aaaa aaa]

[aaaa aaa]

[map[111:111] map[222:222]]

[map[111:000 222:000] map[222:000 111:000]]

因此,可以得出结论,如果是基本类型的数组,range 会直接创建一个新的对象,否则range创建的是引用。

golang range遍历是新创建对象还是创建对象的引用的更多相关文章

  1. go语言之进阶篇通过range遍历channel内容

    1.通过range遍历channel内容 package main import ( "fmt" ) func main() { ch := make(chan int) //创建 ...

  2. C# 7.0 新特性4: 返回引用

    本文参考Roslyn项目中的Issue:#118. 1. C# 7.0 新特性1: 基于Tuple的“多”返回值方法 2. C# 7.0 新特性2: 本地方法 3. C# 7.0 新特性3: 模式匹配 ...

  3. goLang文件遍历

    package main import (  "fmt"  "io/ioutil"  "os"  "path/filepath&q ...

  4. Golang -- range小坑铭记

    废话少叙,先上一段代码,猜猜预期的效果. package main import ( "fmt" ) type student struct { Name string Age i ...

  5. 011_go语言中的range遍历

    代码演示 package main import "fmt" func main() { nums := []int{2, 3, 4} sum := 0 for _, num := ...

  6. 追踪go语言(golang)的新版本新特性【摘抄】

    Go 2.0 新特性展望:详细 go2.0 会有什么新特性呢?下图是一个老外的调侃,他不希望发生这样的事情(please don't make it happen).我倒是希望其中一些实现,比如泛型和 ...

  7. golang中遍历汇总

    直接上例子: 例子1: package main import( "fmt" ) func main(){ a := map[string]string{ "alice& ...

  8. go语言从例子开始之Example11.range遍历

    range 迭代各种各样的数据结构.让我们来看看如何在我们已经学过的数据结构上使用 rang 吧. package main import "fmt" func main() { ...

  9. JDK8新特性,方法的引用

    引用方法并运行 在Java中,方法和构造方法都看作是对象的一种,那么你要引用它(不是调用),则可以用::来引用.用来存储这个引用的类型用@FunctionlaInterface注解来标识. 示例: p ...

随机推荐

  1. redis报错:java.net.SocketException: Broken pipe (Write failed); nested exception is redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketException: Broken pipe (Write failed)

    最近写了一个服务通过springboot构建,里面使用了redis作为缓存,发布到服务器运行成功,但是有时候会报redis的错误:org.springframework.data.redis.Redi ...

  2. 15 Django REST Framework 给api添加自定义搜索条件

    一.ListModelMixin源码 # 源码 class ListModelMixin(object): """ List a queryset. "&quo ...

  3. ubuntu下安装Visual Studio Code

    环境准备 先安装一般umake没有问题 sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make sudo apt-get update sudo ...

  4. Photoshop打造唯美的蓝色古装外景人物图片

    <点小图查看大图> 最终效果 1.打开原图素材大图,按Ctrl + J 把背景图层复制一层,用模糊工具把红圈区域背景模糊处理. <图1> 2.创建可选颜色调整图层,对黄色,绿色 ...

  5. Python----数据预处理

    导入标准库 import numpy as np import matplotlib.pyplot as plt import pandas as pd 导入数据集 dataset = pd.read ...

  6. JAVA之列表

      增: import java.util.ArrayList; import java.util.List; public class T{ public static void main(Stri ...

  7. h5手机查看

    1.装个node:2.全局装个anywhere的npm包.(npm i -g anywhere)3.大功告成,现在到任意目录下用命令行执行anywhere就可以:(-p 参数可以设置启动端口) 补充: ...

  8. 使用Crawler框架搭建自己的爬虫框架MyCrawler

    自己写一个爬虫框架的目的: 完美架构 在实际的数据采集编码过程中,发现代码比较乱,抓取数据,存储数据的代码混杂在一起,为了构建比较完美的数据采集框架 敏捷开发 将数据采集进行标准流程化,每个标准流程都 ...

  9. request+response+jsp+el+jstl

    response: 1.设置响应行的状态码: response.setStatus(int sc); 2.设置response缓冲区的编码:response.setCharacterEncoding( ...

  10. 自动化测试(web测试selenium框架)

    什么是selenium? 一个用于Web应用程序测试的工具直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safa ...