介绍遍历结构体
小编给大家分享一下走如何遍历结构、地图,切片,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
遍历结构体
如何实现遍历结构体字段?好吧,言归正传!举个例子:
demo1:
package 主要 import ( ,才能“fmt" ,才能“reflect" ) type Student  struct { ,,name 字符串 ,,age int } func main (), { ,,v :=, reflect.ValueOf(学生{“乔峰“,,29}) ,,count :=, v.NumField () ,,for 小姐::=,0;,小姐:& lt;,计数;,我+ +,{ ,,,,,f :=, v.Field (i),//字段值 ,,,,,switch f.Kind (), { ,,,,,case reflect.String: ,,,,,,,,fmt.Println (f.String ()) ,,,,,case reflect.Int: ,,,,,,,,fmt.Println (f.Int ()) ,,,,,} ,,} }
再举给栗子:
package 主要 import ( ,才能“fmt" ,才能“reflect" ) type LanType  struct { ,,,s1, s2, s3 字符串 } var language 界面{},=,LanType {“Php",,“Go",,“Python3"} func main (), { ,,value :=, reflect.ValueOf(语言) ,,for 小姐::=,0;,小姐:& lt;, value.NumField();,我+ +,{ ,,,,,fmt.Printf(“字段索引,% d:, % v \ n",,我,,value.Field(我)) ,,} }
输出:
引用>
的基本字段索引0:Php
字段索引1:去
字段索引2:Python3
遍历切片
使用用于范围遍历:
package 主要 import ( ,才能“fmt" ) func main (), { ,,language :=,[]字符串{“Php",,“Go",,“Python3"} ,,for k, val :=, range language { ,,,,,fmt.Printf(“切片索引,% d is : % s \ n",, k, val) ,,} }输出:
基本
引用>
切片索引0是:Php
切片索引1:去
切片索引2:Python3
遍历地图
package 主要 import ( ,才能“fmt" ) func main (), { ,,language :=, (map [string]字符串) ,,语言(“1“),=,“Php" ,,语言(“2“),=,“Go" ,,语言(“3“),=,“Python3" ,,语言(“4“),=,“c#“; ,,for 关键,val :=, range language { ,,,,,fmt.Printf (“% v=祝辞% v \ n",,,, val) ,,} }输出:这里就不贴了,结果会随机输出,因为图遍历出来结果是无序的,顺序不好控制,也不利于业务逻辑;当业务依赖关键次序时,那么我们就需要引入“排序”包来解决随机化问题:
比如这样:
package 主要 import ( ,才能“fmt" ,才能“sort" ) func main (), { ,,language :=, (map [string]字符串) ,,语言(“1“),=,“Php" ,,语言(“2“),=,“Go" ,,语言(“3“),=,“Python3" ,,语言(“4“),=,“c#“; ,,sorted_keys :=,使([]字符串,,0) ,,for k, _ :=, range language { ,,,,,sorted_keys =,附加(sorted_keys, k),//,提取键名 ,,} ,,sort.Strings (sorted_keys),//,,for _, k :=, range sorted_keys { ,,,,,fmt.Printf (“% v=祝辞% v \ n",, k,语言[k]) ,,} }输出:
引用>
1=基本在Php
2=祝辞
3=祝辞Python3
4=在c#
这样输出的结果运行多次也不会改变顺序。
Golang json序列化(结构、int,地图,片)
package 主要 import ( ,,,“编码/json" ,,,“fmt" )//把结构体都改小写 type User  struct { ,,,UserName string ' json:“user_name" ',//json的标签标记 ,,,Nickname string “json:“nickname"” ,,,Age ,,,, int ,,,Birthday 字符串 ,,,Sex ,,,,,的字符串 null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null去如何遍历结构、地图,切片