首页 > 后端开发 > Golang > 如何在 Go 中高效地映射对象数组?

如何在 Go 中高效地映射对象数组?

Linda Hamilton
发布: 2024-12-19 11:44:10
原创
465 人浏览过

How Can I Efficiently Map an Array of Objects in Go?

在 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 函数,但最终决定反对,因为担心:

  • 单行内的隐藏操作成本
  • Map 中不确定的错误处理
  • 鼓励偏离 Go 传统的风格方法

Streams API 被认为是此类功能的潜在未来家园。

以上是如何在 Go 中高效地映射对象数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板