【golang】 lo.Map使用
基本用法
package mainimport ("fmt""github.com/samber/lo"
)func main() {// 假设我们有一个整数列表numbers := []int{1, 2, 3, 4, 5}// 使用 lo.Map 将每个数字平方squaredNumbers := lo.Map(numbers, func(i int, _ int) int {return i * i})fmt.Println(squaredNumbers) // 输出:[1 4 9 16 25]
}
在这个例子中,lo.Map
遍历 numbers
列表,对于每个元素 i
,它调用提供的函数(在这个例子中是匿名函数 func(i int, _ int) int
),并将结果收集到一个新的列表 squaredNumbers
中。 第一个参数是列表中的元素,另一个是该元素的索引。如果映射函数不需要使用元素的索引,那么索引参数就会被命名为 _
来表明它将被忽略。
结构体
package mainimport ("fmt""github.com/samber/lo"
)// Person 定义了一个简单的人结构体
type Person struct {Name stringAge int
}// PersonResponse 定义了响应结构体
type PersonResponse struct {Name stringAge int
}func main() {// 创建一个 Person 列表people := []Person{{"John", 30},{"Jane", 25},{"Bob", 40},}// 使用 lo.Map 将 Person 列表转换为 PersonResponse 列表responses := lo.Map(people, func(p Person, _ int) PersonResponse {return PersonResponse{Name: p.Name,Age: p.Age,}})// 输出转换后的列表for _, resp := range responses {fmt.Printf("Name: %s, Age: %d\n", resp.Name, resp.Age)}
}