go1.19になったので、ジェネリクス(go1.18から)をおさらい。
微妙に忘れそうなのでメモ。
<型違いの足し算>
演算子オーバーロードではないけれど、便利
type Addable interface{
int64 | float64
}
func add[T Addable](a, b T) T {
return a + b
}
<type set 派生型(近似)の雑な使い方>
・ダメな例(使い方が厳密)
type struct1 interface{
int64 | float64
}
func func1[T struct1](v T){
fmt.Println(v)
}
func1(int64(v)) //型が厳密
・雑に扱える例
type struct1 interface{
~int64 | ~float64
}
func func1[T struct1](v T){
fmt.Println(v) //型があいまい
}
func1(v)
<インターフェース定義を楽にする>
下記のパッケージに
package constraints
型が用意されてる
type Singed interface{}
type Unsinged interface{}
type Integer interface{}
type Complex interface{}
type Orderd interface{}
0 件のコメント:
コメントを投稿