「Go/関数」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
タグ: 2017年版ソースエディター
314 行
: interface{} も any に合致するので、異種スタックを実現できます。
 
=== Map, Reduce と Filter ===
;[https://go2goplay.golang.org/p/OoTg51e4o8sxmJb0NKbYe6 Map, Reduce とFilter]:<syntaxhighlight lang="go" highlight="5,13,21" line>
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>