使用for循环对 golang 中结构体数组取值进行修改时,需要注意的问题

废话少说,直接上代码:

	type a1 struct {
		key1 string
		key2 string
		key3 string
	}
	testData := []a1{
		a1{"1","2", "3"},
		a1{"4","5", "6"},
	}

上面的代码定义了一个结构体,声明了一个数组。

采用循环变量可以修改数组中结构体的取值:

	for i := 0; i < len(testData); i++ {
		testData[i].key3 = "999"
	}
	fmt.Printf("%v", testData)

输出:[{1 2 999} {4 5 999}]

采用 range 获取的下标值,然后用下标方式引用的数组项也可以直接修改:

	for idx, _ := range testData {
		testData[idx].key3 = "999"
	}
	fmt.Printf("%v", testData)

输出:[{1 2 999} {4 5 999}]

采用 range 获取数组项不能修改数组中结构体的值:

	for _, item := range testData {
		item.key3 = "999"
	}
	fmt.Printf("%v", testData)

输出:[{1 2 3} {4 5 6}]

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏从流域到海域

《笨办法学Python》 第39课手记

《笨办法学Python》 第39课手记 本节课讲列表的操作,用来做练习的代码中出现了之前用到过的几个函数,是一节复习课。你需要记住它们。 原代码如下: ten_...

2067
来自专栏Python爱好者

Python高效编程(一)

2329
来自专栏coder修行路

Go 处理yaml类型的配置文件

先说一下,这里用到了很多关于反射类型的功能,可能刚开始看代码,如果对反射不熟悉的可能会不是非常清晰,但是同时也是为了更好的理解golang中的反射,同时如果后面...

2000
来自专栏阮一峰的网络日志

YAML 语言教程

编程免不了要写配置文件,怎么写配置也是一门学问。 YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便。 本文介绍 YAML 的语法,...

3436
来自专栏守候书阁

实例感受-es6的常用语法和优越性

前几天,用es6的语法重写了我的一个代码库,说是重写,其实改动的并不多,工作量不大。在重写完了的时候,就个人总结了一下es6常用的一些常用的语法和比es5优越的...

853
来自专栏尾尾部落

[剑指offer] 序列化二叉树

原文地址: https://weiweiblog.cn/serialize/

2581
来自专栏Linux驱动

shell变量$(CURDIR),$0,$1,$2,$#含义解释

$(CURDIR):   CURDIR是make的内嵌变量, 为当前目录 实例 SRCTREE := $(CURDIR) *$(CURDIR)为当前目...

4015
来自专栏Golang语言社区

Go 语言简介(上)— 语法

Hello World package main //声明本文件的package名 import "fmt" //import语言的fmt库——用于输出 f...

4048
来自专栏debugeeker的专栏

《coredump问题原理探究》Linux x86版3.3节栈布局之局部变量

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuzhina/article/detai...

911
来自专栏吴伟祥

YAML 语言入门教程 转

YAML 仍然是一门标记性语言,但为了强调这门语言以数据为中心,而不是以标记语言为中心。采用反向缩略语重新命名。

753

扫码关注云+社区

领取腾讯云代金券