上級 › does not satisfy(ジェネリクスの制約違反)の原因と直し方 › パターン5
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: complex64 does not satisfy Number (complex64 missing in ~int | ~float64)
空欄を埋めて実行を通す
複素数型complex64も~int | ~float64のどちらにも含まれないため、Number制約を満たせません。
次の問題