32 lines
464 B
Go
32 lines
464 B
Go
package main
|
|
|
|
import "fmt"
|
|
|
|
type intSlice []int
|
|
|
|
func (s intSlice) each(f func(int)) {
|
|
for _, i := range s {
|
|
f(i)
|
|
}
|
|
}
|
|
|
|
func (s intSlice) Map(f func(int) int) intSlice {
|
|
r := make(intSlice, len(s))
|
|
for j, i := range s {
|
|
r[j] = f(i)
|
|
}
|
|
return r
|
|
}
|
|
|
|
func main() {
|
|
s := intSlice{1, 2, 3, 4, 5}
|
|
|
|
s.each(func(i int) {
|
|
fmt.Println(i * i)
|
|
})
|
|
|
|
fmt.Println(s.Map(func(i int) int {
|
|
return i * i
|
|
}))
|
|
}
|