op.go 411 B

12345678910111213141516171819202122232425262728
  1. package rt
  2. import (
  3. "fmt"
  4. "reflect"
  5. )
  6. func intOf(x interface{}) (a int) {
  7. fmt.Println(reflect.TypeOf(x))
  8. switch x.(type) {
  9. case *INTEGER:
  10. z := *x.(*INTEGER)
  11. a = int(z)
  12. case *int:
  13. z := *x.(*int)
  14. a = z
  15. case int:
  16. a = x.(int)
  17. default:
  18. panic("unsupported type")
  19. }
  20. return a
  21. }
  22. func Sum(_a interface{}, _b interface{}) interface{} {
  23. var a int = intOf(_a)
  24. var b int = intOf(_b)
  25. return a + b
  26. }