http://play.golang.org/p/y7G1fMSoVaGolang, Go: (ре-пост) общая сумма в Go
Я так сожалею. Я случайно удалил свой предыдущий вопрос. Вот моя вторая попытка.
Я знаю, что Go не поддерживает общие типы, но должен быть способ сделать это.
Я пытаюсь добавить любые два аргумента и вернуть результат с помощью интерфейса и утверждения типа. Но я застрял на
(+) не определена в интерфейсе
не могу думать о какой тип я должен вернуться
Это мой предыдущий шаг.
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)
Благодаря всегда.
Большое спасибо x10000 –