首先,可以通过for-range语句遍历切片和映射。for-range语句让代码更清晰易懂。
遍历slice
下面是遍历slice的示例:
package main
import "fmt"
func main() {
// 声明一个字符串切片
fruits := []string{"apple", "banana", "orange"}
// 使用 for-range 遍历切片
for index, value := range fruits {
fmt.Printf("fruits[%d] = %s\n", index, value)
}
}
输出:
fruits[0] = apple
fruits[1] = banana
fruits[2] = orange
遍历map
下面是遍历map的示例:
package main
import "fmt"
func main() {
// 声明一个 map,键是字符串,值是整型
grades := map[string]int{"Alice": 90, "Bob": 80, "Cindy": 70}
// 使用 for-range 遍历 map
for key, value := range grades {
fmt.Printf("%s's grade is %d\n", key, value)
}
}
输出:
Alice's grade is 90
Bob's grade is 80
Cindy's grade is 70
遍历struct
当我们想要访问一个结构体中的所有字段时,可以使用反射包。下面是一个遍历结构体的示例:
package main
import (
"fmt"
"reflect"
)
type Person struct {
Name string
Age int
Address string
}
func main() {
p := Person{"Jack", 26, "Beijing"}
// 获取结构体类型
t := reflect.TypeOf(p)
// 获取结构体字段数量
numField := t.NumField()
// 遍历结构体字段,并逐个访问它们的值
for i := 0; i < numField; i++ {
field := t.Field(i)
value := reflect.ValueOf(p).FieldByName(field.Name)
fmt.Printf("%s=%v\n", field.Name, value)
}
}
输出:
Name=Jack
Age=26
Address=Beijing
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Go遍历struct,map,slice的实现 - Python技术站