上級 › does not satisfy(ジェネリクスの制約違反)の原因と直し方 › パターン2
does not satisfy(ジェネリクスの制約違反)の原因と直し方
ジェネリック関数の型パラメータには制約(constraint)を指定できます。
1 package main 2 3 import "fmt" 4 5 type Number interface { 6 ~int | ~float64 7 } 8 9 func sum[T Number](vals []T) T { 10 var total T 11 for _, v := range vals { 12 total += v 13 } 14 return total 15 } 16 17 func main() { 18 fmt.Println(sum(___________________)) ^ 19 }
./main.go:18:17: bool does not satisfy Number (bool missing in ~int | ~float64)
空欄を埋めて実行を通す
boolは+=のような算術演算をサポートしないため、Number制約を満たせずコンパイルエラーになります。
次の問題