Code Fix

上級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)

空欄を埋めて実行を通す

広告
広告スロット(未設定)

does not satisfy(ジェネリクスの制約違反)の原因と直し方

制約が要求する演算(比較や算術演算など)をサポートしない型を渡すと、コンパイルエラーになります。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)