Go语言实现数组的Map函数
发布时间:2020-12-16 18:51:46 所属栏目:大数据 来源:网络整理
导读:package mainimport ("fmt""reflect")func Map(slice interface{},fn func(a interface{}) interface{}) interface{} {val := reflect.ValueOf(slice)out := reflect.MakeSlice(reflect.TypeOf(slice),val.Len(),val.Cap())for i := 0; i val.Len(); i++ {ou
package main import ( "fmt" "reflect" ) func Map(slice interface{},fn func(a interface{}) interface{}) interface{} { val := reflect.ValueOf(slice) out := reflect.MakeSlice(reflect.TypeOf(slice),val.Len(),val.Cap()) for i := 0; i < val.Len(); i++ { out.Index(i).Set( reflect.ValueOf(fn(val.Index(i).Interface())),) } return out.Interface() } func main() { a := Map([]int{1,2,3,4},func(val interface{}) interface{} { return val.(int) * 2 }) fmt.Printf("%T: %vn",a,a) } http://play.golang.org/p/g77ofhvNyj (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |