在 Go 中映射对象数组
在 Node.js 中,您可以使用 map 函数将对象数组转换为值数组。想知道如何在 Go 中简洁地实现这一点?
Go 解决方案:映射为顶级函数
与 Go 中的方法不同,顶级函数可以采用额外的方法类型参数。使用它,我们可以将 Map 定义为通用函数:
func Map[T, U any](ts []T, f func(T) U) []U { us := make([]U, len(ts)) for i := range ts { us[i] = f(ts[i]) } return us }
现在,您可以按如下方式使用此函数:
names := []string{"Alice", "Bob", "Carol"} fmt.Println(Map(names, utf8.RuneCountInString)) // Output: [5 3 5]
历史背景:为什么 Map 不存在在标准 Go 库
Go 1.18 之前,GitHub 中进行了广泛的讨论golang.org/x/exp/slices 提案的问题曾考虑添加 Map 函数,但最终决定反对,因为担心:
Streams API 被认为是此类功能的潜在未来家园。
以上是如何在 Go 中高效地映射对象数组?的详细内容。更多信息请关注PHP中文网其他相关文章!