去如何遍历结构、地图,切片

  介绍

小编给大家分享一下走如何遍历结构、地图,切片,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

遍历结构体

如何实现遍历结构体字段?好吧,言归正传!举个例子:

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

去如何遍历结构、地图,切片