在 golang 函数中遍历不同类型的数据结构的方法:遍历 list(数组、切片):使用 for 循环遍历数组或切片。遍历 map:使用 for 循环遍历映射。遍历 channel:使用 for 循环遍历通道。遍历自定义结构体:使用反转规则遍历自定义结构体。
如何在 Golang 函数中遍历不同类型的数据结构?
Golang 提供了丰富的内置类型和自定义数据结构。在函数中遍历这些数据结构对于提取数据、应用操作或更新其内容至关重要。
遍历 List(数组、切片)
立即学习“go语言免费学习笔记(深入)”;
使用 for 循环遍历数组或切片:
func iterateList(list []int) {
for _, value := range list {
fmt.Println(value)
}
}
遍历 Map
用 for 循环遍历映射:
func iterateMap(m map[string]int) {
for key, value := range m {
fmt.Println(key, value)
}
}
遍历 Channel
用 for 循环遍历通道:
func iterateChannel(ch <-chan int) {
for {
select {
case value := <-ch:
fmt.Println(value)
default:
return // 通道为空,退出循环
}
}
}
遍历自定义结构体
使用反转规则遍历自定义结构体:
type Person struct {
name string
age int
}
func iterateStruct(p Person) {
for key, value := range reflect.ValueOf(p).Elem().FieldByName("person").Interface().(map[string]interface{}) {
fmt.Println(key, value)
}
}
实战案例:读取 JSON 数据
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
data, err := ioutil.ReadFile("data.json")
if err != nil {
log.Fatal(err)
}
people := []Person{}
err = json.Unmarshal(data, &people)
if err != nil {
log.Fatal(err)
}
for _, person := range people {
fmt.Println(person.Name, person.Age)
}
}
遵循这些步骤,你可以在 Golang 函数中轻松遍历各种类型的数据结构,解锁更多数据操作和处理的可能性。