猿问

(重新发布)Go 中的通用总和

http://play.golang.org/p/y7G1fMSoVa

我很抱歉。我不小心删除了我之前的问题。这是我的第二次尝试。

我知道 Go 不支持泛型,但应该有办法做到这一点。

我正在尝试添加任何类型的两个参数并使用接口和类型断言返回结果。但我被困在

  1. (+) 未在接口中定义

  2. 想不出我应该返回什么类型

这是我的上一步。

   func Add(val1, val2 interface{}) int {

        new_a := val1.(int)

        new_b := val2.(int)

        return new_a + new_b

   }

这给了我正确的答案,但这是无用的,因为我知道将传递整数值。我想要一个不知道会给出什么的函数,并根据给定的变量类型返回相应的加法。


这是我第二次尝试并卡住了。


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)


慕森王
浏览 188回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答