Browse Source

Use type switch (#5122)

tags/v1.7.0-dev
Oleg Kovalov 5 years ago
parent
commit
971dccda16
2 changed files with 24 additions and 24 deletions
  1. 16
    16
      modules/base/tool.go
  2. 8
    8
      modules/base/tool_test.go

+ 16
- 16
modules/base/tool.go View File

var rleft, rright int64 var rleft, rright int64
var fleft, fright float64 var fleft, fright float64
var isInt = true var isInt = true
switch left.(type) {
switch left := left.(type) {
case int: case int:
rleft = int64(left.(int))
rleft = int64(left)
case int8: case int8:
rleft = int64(left.(int8))
rleft = int64(left)
case int16: case int16:
rleft = int64(left.(int16))
rleft = int64(left)
case int32: case int32:
rleft = int64(left.(int32))
rleft = int64(left)
case int64: case int64:
rleft = left.(int64)
rleft = left
case float32: case float32:
fleft = float64(left.(float32))
fleft = float64(left)
isInt = false isInt = false
case float64: case float64:
fleft = left.(float64)
fleft = left
isInt = false isInt = false
} }


switch right.(type) {
switch right := right.(type) {
case int: case int:
rright = int64(right.(int))
rright = int64(right)
case int8: case int8:
rright = int64(right.(int8))
rright = int64(right)
case int16: case int16:
rright = int64(right.(int16))
rright = int64(right)
case int32: case int32:
rright = int64(right.(int32))
rright = int64(right)
case int64: case int64:
rright = right.(int64)
rright = right
case float32: case float32:
fright = float64(right.(float32))
fright = float64(right)
isInt = false isInt = false
case float64: case float64:
fright = right.(float64)
fright = right
isInt = false isInt = false
} }



+ 8
- 8
modules/base/tool_test.go View File



func TestSubtract(t *testing.T) { func TestSubtract(t *testing.T) {
toFloat64 := func(n interface{}) float64 { toFloat64 := func(n interface{}) float64 {
switch n.(type) {
switch n := n.(type) {
case int: case int:
return float64(n.(int))
return float64(n)
case int8: case int8:
return float64(n.(int8))
return float64(n)
case int16: case int16:
return float64(n.(int16))
return float64(n)
case int32: case int32:
return float64(n.(int32))
return float64(n)
case int64: case int64:
return float64(n.(int64))
return float64(n)
case float32: case float32:
return float64(n.(float32))
return float64(n)
case float64: case float64:
return n.(float64)
return n
default: default:
return 0.0 return 0.0
} }

Loading…
Cancel
Save