Go语言实现数组的Map函数

前端之家收集整理的这篇文章主要介绍了Go语言实现数组的Map函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "reflect"
  6. )
  7.  
  8. func Map(slice interface{},fn func(a interface{}) interface{}) interface{} {
  9. val := reflect.ValueOf(slice)
  10. out := reflect.MakeSlice(reflect.TypeOf(slice),val.Len(),val.Cap())
  11. for i := 0; i < val.Len(); i++ {
  12. out.Index(i).Set(
  13. reflect.ValueOf(fn(val.Index(i).Interface())),)
  14. }
  15. return out.Interface()
  16. }
  17.  
  18. func main() {
  19. a := Map([]int{1,2,3,4},func(val interface{}) interface{} {
  20. return val.(int) * 2
  21. })
  22. fmt.Printf("%T: %v\n",a,a)
  23. }

http://play.golang.org/p/g77ofhvNyj

猜你在找的Go相关文章