golang遍历结构体(struct)字段对应的值,切片(slice),字典(map)
来源:互联网 发布:数据下载 编辑:程序博客网 时间:2024/05/23 11:46
一、遍历结构体字段:
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.Field(i) switch f.Kind() { case reflect.String: fmt.Println(f.String()) case reflect.Int: fmt.Println(f.Int()) } }}
输出结果:
steve
30
eg2:
package mainimport ( "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 mainimport ( "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 mainimport ( "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 mainimport ( "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的先后顺序是按照字母或者数字排列的。
阅读全文
0 0
- golang遍历结构体(struct)字段对应的值,切片(slice),字典(map)
- Go学习笔记(七)结构体,切片(Slice)
- golang语法总结(十五):数组array与切片slice
- Golang 学习之路七:数据(Array、Slice、Map、Struct)
- Python 切片(slice)
- 切片(slice)
- Go 语言切片(Slice)
- golang 学习笔记(1)数组,切片,字典
- golang ---- slice 切片
- Golang slice 切片
- golang slice 切片原理
- golang语法总结(十九):结构struct
- GoLang 遍历 map、slice、array方法和template遍历map
- golang 数组切片(一)
- golang 数组切片(二)
- 8 对list进行切片(Slice)
- 【Python】高级特性之切片(slice)
- Go编程基础—切片(Slice)
- SpringMVC集成swagger2
- Hello CSDN
- Unity生成WebGL是InputField显示中文
- Makefile实例
- Spring中注解@Bean、@Resource、@Component、@SpringStudy
- golang遍历结构体(struct)字段对应的值,切片(slice),字典(map)
- what fuck
- 相关学习网站
- 压缩并设置圆形头像
- Gzip压缩的HttpResponse解析
- LeetCode.341 Flatten Nested List Iterator
- C++学习笔记---引用
- Java读取.ini文件(二)
- 5G系统RAN架构解析之CU和DU的应用和功能切分方式