「Go/関数」の版間の差分
削除された内容 追加された内容
タグ: 2017年版ソースエディター |
タグ: 2017年版ソースエディター |
||
314 行
: interface{} も any に合致するので、異種スタックを実現できます。
=== Map, Reduce と Filter ===
;[https://go2goplay.golang.org/p/
package main
332 行
for _, v := range s {
result = f(result, v)
}
return result
}
func Filter[T any](s []T, f func(T) bool) []T {
result := make([]T, 0)
for _, v := range s {
if f(v) {
result = append(result, v)
}
}
return result
339 ⟶ 349行目:
fmt.Println(Map([]int{2, 4, 5, 7}, func(i int) float64 { return float64(i * i) }))
fmt.Println(Reduce([]int{2, 4, 5, 7}, 0, func(i, j int) int { return i + j }))
fmt.Println(Filter([]int{2, 4, 5, 7}, func(i int) bool { return i > 2 }))
}
</syntaxhighlight>
344 ⟶ 355行目:
[4 16 25 49]
18
[4 5 7]
</syntaxhighlight>
; 解説 :<syntaxhighlight lang="go" start="5"line>
351 ⟶ 363行目:
:<syntaxhighlight lang="go" start="13"line>
func Reduce[T1, T2 any](s []T1, init T2, f func(T2, T1) T2) T2 {
</syntaxhighlight>
:<syntaxhighlight lang="go" start="21"line>
func Filter[T any](s []T, f func(T) bool) []T {
</syntaxhighlight>
|