Go言語で配列の各要素が全て条件を満たすかどうかを調べる

関連 : 配列の各要素が全て条件を満たすかどうかを調べる - brainstorm


Go言語だとビルトインには無さそう。
自前で書くとこんな感じか

package main

import (
	"fmt"
)

func All(vs []string, f func(string) bool) bool {
	for _, v := range vs {
		if !f(v) {
			return false
		}
	}
	return true
}

func main() {

	result := All([]string{"a", "b", "c"},
		func(s string) bool { return len(s) == 1 })

	fmt.Println(result)
	// -> true

	result2 := All([]string{"a", "b", "c", "dd"},
		func(s string) bool { return len(s) == 1 })

	fmt.Println(result2)
	// -> false
}

しかしこれだとstringの配列しか渡せない。汎用的に書くにはどうするのがよいのだろうか