http://play.golang.org/p/y7G1fMSoVa
本当に申し訳ない。前の質問を誤って削除してしまいました。これが私の2回目の試みです。
Go がジェネリック型をサポートしていないことは知っていますが、これを行う方法があるはずです。
任意の型の 2 つの引数を追加し、インターフェイスと型アサーションを使用して結果を返そうとしています。しかし、私は立ち往生しています
(+) はインターフェイスで定義されていません
どの型を返すべきか考えられない
これは私の前のステップです。
func Add(val1, val2 interface{}) int {
new_a := val1.(int)
new_b := val2.(int)
return new_a + new_b
}
これで正しい答えが得られますが、整数値が渡されることがわかっているため、これは役に立ちません。何が与えられるかわからず、与えられた変数の型に応じて加算を返す関数が必要です。
これが私の2回目の試行で、行き詰まります。
http://play.golang.org/p/-_jvvs09nl
func Add(val1, val2 interface{}) {
// var x interface{} = 7 // x has dynamic type int and value 7
// i := x.(int) // i has type int and value 7
// a := reflect.ValueOf(val1)
// b := reflect.ValueOf(val2)
// fmt.Println(a, b)
// <int Value> <int Value>
type_val1 := reflect.TypeOf(val1)
type_val2 := reflect.TypeOf(val2)
fmt.Println(type_val1, type_val2)
result1 := val1.(type_val1) // ERROR : type_val1 is not a type
result2 := val2.(type_val2) // ERROR : type_val2 is not a type
fmt.Println(result1, result2)