与java8一样:
someList.stream().map(e->e.getXXX()).toList()例如,我有一个Student数组/片,而struct Student包含Id、Name等属性。
我希望将所有I提取到一个新的数组/切片中,并使用上面提到的单行代码(如java8 ),而不是range。有例子吗?
发布于 2021-03-28 08:01:26
目前还没有一种简单的、内置的方法来做到这一点。虽然Go具有一流的函数和词法闭包,但不可能编写像map这样的函数,它将以您想要的方式对任意类型进行操作。(此外,这里没有紧凑的lambda语法,但我认为这是一个相对较小的问题)。
相反,您必须执行以下操作之一:
interface{}进行手术。虽然这将允许您编写一个func map([]interface{}, func(interface{})interface{}) []interface{},但是您将失去编译时类型的安全性,您将失去性能,而且[]interface{}不是一个[]string (或者您想要获取的字段中的任何类型),您甚至不能将其类型断言到一个字段中,因此处理结果非常麻烦。大多数有经验的Go用户会推荐方法#3,我也会(不情愿地)推荐。
https://stackoverflow.com/questions/66839360
复制相似问题