go遍历结构体(struct)字段对应的值,切片(slice),字典(map)_go结构体遍历_alpha_2017的博客-CSDN博客


本站和网页 https://blog.csdn.net/alpha_love/article/details/119284509 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

go遍历结构体(struct)字段对应的值,切片(slice),字典(map)_go结构体遍历_alpha_2017的博客-CSDN博客
go遍历结构体(struct)字段对应的值,切片(slice),字典(map)
alpha_2017
于 2021-08-01 00:49:01 发布
741
收藏
分类专栏:
Go
原文链接:https://blog.csdn.net/weixin_37998647/article/details/78592964?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCo
版权
Go
专栏收录该内容
26 篇文章
0 订阅
订阅专栏
一、遍历结构体字段: eg1:
package main
import (
"fmt"
"reflect"
type person struct {
name string
age int
func main() {
v := reflect.ValueOf(person{"steve", 30})
count := v.NumField()
for i := 0; i < count; i++ {
f := v.Field(i)
switch f.Kind() {
case reflect.String:
fmt.Println(f.String())
case reflect.Int:
fmt.Println(f.Int())
输出结果: steve 30 eg2:
package main
import (
"fmt"
"reflect"
type NotknownType struct {
s1, s2, s3 string
var secret interface{} = NotknownType{"Ada", "Go", "Oberon"}
func main() {
value := reflect.ValueOf(secret)
for i := 0; i < value.NumField(); i++ {
fmt.Printf("Field %d: %v\n", i, value.Field(i))
输出结果: Field 0: Ada Field 1: Go Field 2: Oberon
二、遍历切片: for range 结构
package main
import (
"fmt"
func main(){
slice := []string{"hello","world","hello","everyone!"}
for k,val:=range slice{
fmt.Printf("slice %d is :%s\n",k,val )
输出结果: slice 0 is :hello slice 1 is :world slice 2 is :hello slice 3 is :everyone!
三、遍历map:
package main
import (
"fmt"
func main() {
m := make(map[string]string)
m["1"] = "hello"
m["2"] = "world"
m["3"] = "go"
m["4"] = "is"
m["5"] = "cool"
fmt.Printf("The corresponding relationship between key and value is:\n")
for key, val := range m {
fmt.Printf("%v===>%v\n", key, val)
输出结果: The corresponding relationship between key and value is: 1===>hello 2===>world 3===>go 4===>is 5===>cool
但是还有一个问题,上面的程序不做改动运行第二次,结果顺序就会改变,因为map遍历出来结果是无序的,这不好控制,也不利于业务逻辑;当业务依赖key次序时,需要引入“sort”包来解决随机化问题 代码如下:
package main
import (
"fmt"
"sort"
func main() {
m := make(map[string]string)
m["1"] = "hello"
m["2"] = "world"
m["3"] = "go"
m["4"] = "is"
m["5"] = "cool"
sorted_keys := make([]string, 0)
for k, _ := range m {
sorted_keys = append(sorted_keys, k)
sort.Strings(sorted_keys)
for _, k := range sorted_keys {
fmt.Printf("%v=====>%v\n", k, m[k])
输出结果是: 1=====>hello 2=====>world 3=====>go 4=====>is 5=====>cool 注意: 输出的结果运行多次不会改变顺序。 但是key的先后顺序是按照字母或者数字排列的。
alpha_2017
关注
关注
点赞
收藏
知道了
评论
go遍历结构体(struct)字段对应的值,切片(slice),字典(map)
一、遍历结构体字段:eg1:package mainimport ( "fmt" "reflect")type person struct { name string age int}func main() { v := reflect.ValueOf(person{"steve", 30}) count := v.NumField() for i := 0; i < count; i++ { f := v.Fie
复制链接
扫一扫
专栏目录
go在方法中修改结构体的值_golang reflect遍历struct并赋值 & struct创建和数据绑定-Go语言中文社区...
weixin_39616855的博客
12-20
1906
了解和使用golang有一段时间了,由于项目比较赶,基本是现学现卖的节奏。最近有时间会在简书上记录遇到的一些问题和解决方案,希望可以一起交流探讨。需求在golang中,给定一组数据,例如map[string]interface{}类型的数据,创建一个对应的struct并赋值简易实现var data = map[string]interface{}{"id": 1001,"name": "a...
9-Go基础:结构体与指针
qq23001186的博客
04-25
560
目录一、结构体1 - 结构体创建与初始化2 - 结构体数组3 - 结构体切片4 - 结构体map5 - 结构体作为函数参数二、指针1 - 指针定义2 - 指针操作注意事项3 - 指针变量作为函数参数4 - 数组指针5 - 指针数组6 - 切片指针7 - 结构体指针8 - 多级指针(简单了解)
一、结构体
1 - 结构体创建与初始化
结构体概念:结构体是由一系列具有相同类型或不同类型的数据构成的数据集合
结构体应用场景:结构体可以很好地管理一批有联系的数据,使用结构体可以提高程序的易读性
结构体创建语法
参与评论
您还未登录,请先
登录
后发表或查看评论
go语言中遍历数组的方法有哪些
Free雅轩的博客
02-24
660
通过 for range 的形式来遍历数组元素,index 即是数组的索引,value 是数组的索引 index 处对应的数组的值。1、用for循环语句遍历数组,语法“for i :=0;我们通过 len 函数,获取数组元素的个数,然后通过 for 循环加索引的形式获取每一个数组元素的值。Go 语言 的键值 for 循环 使用的是 for range 的语法形式,可以用来遍历 数组。//我们可以通过 for range循环的形式遍历数组。//我们可以通过 for循环加索引的形式遍历数组。
用Go语言 遍历结构体的字段和调方法 (反射最佳实践) (Golang经典编程案例)
崔永华的博客
07-08
3万+
案例:使用反射来遍历结构体的字段,调用结构体的方法,并获取结构体标签的值。
package main
import (
"fmt"
"reflect"
//定义Monster结构体
type Monster struct {
Name string `json:"name"`
Age int `json:"monster_age"`
Score float32 `json:"成绩"...
go中的interface
jacob_007的专栏
12-10
3689
用了9年的C++,1年的C#,最近改用go语言开发,深感go语言的设计简单,其设计宗旨也是less is more,它极大的加快了开发速度。 go语言吸取了很多现代语言的优点,一个比较重要的特性就是基于接口编程,函数是程序世界的第一公民,这个有点像scalar语言。实现这个接口的语言原型是interface。基于接口编程C++中不支持接口,接口的实现方式是用纯虚函数来实现的,C#具有接口,但是它认
Go学习笔记:2、循环、条件语句,函数,结构体
polo_longsan的专栏
05-13
139
一、Go语言循环
package main
import "fmt"
func main() {
//循环方式1
sum := 0
for i := 1; i <=10; i++{
sum += i
fmt.Println(sum)
//循环方式2
sum = 0
//像while循环
for sum<=10 {
sum ++;
fmt.Println(sum)
//迭代输出数组
strs := [2]string{"google", "b
golang反射之遍历struct字段及内容
niqinge
06-05
5617
package main
import (
"fmt"
"reflect"
type BaseData struct {
// mysql
DbUrl string `yaml:"db_url" name:"数据库地址"`
DbUser string `yaml:"db_user" name:"数据库用户名"`
DbPassWord string `yaml:"db_pass_word" name:"数据库密码"`
DbName .
golang遍历 struct 等结构体,使用 range 关键字
孙健的专栏
04-15
1万+
for k,v := range Xxx {
遍历字段_GO指南--结构体遍历
weixin_32842959的博客
01-13
504
结构体一个结构体(struct)就是一个字段的集合。结构体字段使用点号来访问。package main
import "fmt"
type Vertex struct {
X int
Y int
func main() {
v := Vertex{1, 2}
v.X = 4
fmt.Println(v.X)
结构体字段可以通过结构体指针来访问,与c不同的是,通过指针间接的访...
Go结构体
清涵
02-18
444
文章目录结构体定义结构体访问结构体成员结构体作为函数参数结构体指针
结构体
Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。
结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。
定义结构体
type struct_variable_type struct {
member definition;
member definition;
...
go reflect struct 遍历,反射
weixin_33709590的博客
07-21
1021
为什么80%的码农都做不了架构师?>>>
...
go语言 使用for循环对结构体成员赋值注意事项
qq_42034205的博客
03-10
4252
今天用go写项目时候,发现使用for循环对结构体成员赋值时的一个坑。是巨坑。踩了很难找出来
问题描述
使用for循环对结构体成员赋值注意事项:
type X struct {
A int
func main() {
//定义了一个结构体数组,现在for循环给结构数组成员体赋值
data := []X{
X{0},
X{0},
采...
GO 解析(map[string]interface{})数据格式并打印出数据
热门推荐
坐在那边看天空 的博客
05-29
4万+
interface转其他类型 有时候返回值是interface类型的,直接赋值是无法转化的。var a interface{}
var b string
a = "123"
b = a.(string)1234通过a.(string) 转化为string,通过v.(int)转化为类型。 可以通过a.(type)来判断a可以转为什么类型。 //解析(map[string]interface{})数据...
谈一谈Go的结构体struct的使用方法
森森
12-13
1万+
定义结构体
package main
import (
"fmt"
type test struct {
func main() {
a := test{}
fmt.Println(a)
输出:
{}
package main
import (
"fmt"
//定义一个person结构,类似于在PHP定义了一个pers
golang---利用反射机制对结构体进行循环赋值
鱼鱼的专栏
12-06
7293
熟悉C语言的朋友都知道,C语言的指针操作某些方面是很方便的。
如假设你知道内存中有一个连续100个字节的区域,或者你有一个连续100个字节的字节数组,你需要用其对一个已经定义好的结构体进行赋值,在c语言你可以简单地将内存数据中的头地址,或者字节数组的头地址赋值给结构体指针就行。
但在go语言中该如何实现?
假设你有如下的golng结构体:
这个结构体的数据可以对
golang中使用反射Reflect遍历切片or结构体取值(实例)
Raily_Qi的博客
07-15
9270
话不多说直接上例子说明。
“key”: 1561075200000,
“agg”: {“value”: 123}
},
“key”: 1561161600000,
“agg”: {“value”: 125}
},
{…},
{…},
如上所示是一个内嵌struct的切片,我想输出key 和value 的值:
for i := 0; i < len(m); i++{ //m为...
C++ 如何遍历结构体
最新发布
03-06
你可以使用指针来遍历结构体,具体方法如下:
1. 定义一个指向结构体的指针变量,例如:struct student *p;
2. 将指针变量指向结构体的首地址,例如:p = &s;
3. 使用指针变量访问结构体中的成员,例如:p->name、p->age、p->score。
4. 可以使用循环语句来遍历结构体数组,例如:
for(int i=; i<n; i++){
printf("第%d个学生的信息:\n", i+1);
printf("姓名:%s\n", stu[i].name);
printf("年龄:%d\n", stu[i].age);
printf("成绩:%d\n", stu[i].score);
注意:结构体中的成员变量可以是基本数据类型、数组、指针等。遍历结构体时,需要根据具体情况选择合适的访问方式。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
alpha_2017
CSDN认证博客专家
CSDN认证企业博客
码龄6年
暂无认证
207
原创
3万+
周排名
111万+
总排名
45万+
访问
等级
4929
积分
320
粉丝
330
获赞
37
评论
857
收藏
私信
关注
热门文章
教你写Makefile(很全,含有工作经验的)
81876
java中到底有没有指针?
39902
Python 元组(Tuple)操作详解
29165
Linux网络编程 --------- Socket编程---最浅显易懂的介绍
15457
路由器和交换机的区别,太经典了
11006
分类专栏
Redis
23篇
Zookeeper
10篇
分布式系统
2篇
hive
1篇
ZeroMQ
12篇
Go
26篇
Nginx
47篇
Mysql
7篇
Mongo
Shell
3篇
STL 详解
5篇
Linux系统编程
39篇
Linux网络编程
49篇
C++
28篇
设计模式
26篇
Python
10篇
数据结构与算法
37篇
最新评论
Python 元组(Tuple)操作详解
阿豪Smoking hot:
可以的,老铁
RabbitMQ消息队列,看这篇文章就够了
挚爱妲己~:
挺详细的
Python中函数的用法
ZHANGZJ_:
为什么有的函数是对象点函数,有的是函数(对象),比如len(t),为什么不是t.len(),这两种函数有什么区别
Linux系统编程 -- exec函数族
WXiujie123456:
不错的好文,鉴定完毕!
linux创建n个进程的方法 --- fork
water___Wang:
受教了~
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
Redis 6.0 源码阅读笔记(14) -- redis 时序图
linux 进程的pid分配策略——pid位图算法
hive简单介绍
2022年1篇
2021年115篇
2020年97篇
2019年12篇
2018年3篇
2017年164篇
目录
目录
分类专栏
Redis
23篇
Zookeeper
10篇
分布式系统
2篇
hive
1篇
ZeroMQ
12篇
Go
26篇
Nginx
47篇
Mysql
7篇
Mongo
Shell
3篇
STL 详解
5篇
Linux系统编程
39篇
Linux网络编程
49篇
C++
28篇
设计模式
26篇
Python
10篇
数据结构与算法
37篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
红包个数最小为10个
红包总金额
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值