The example could have been simplified:
func abs(x Top) Top {
switch v := x.(type) {
case int32:
if v < 0 {
return -v
}
case int64:
if v < 0 {
return -v
}
case float32:
if v < 0 {
return -v
}
case float64:
if v < 0 {
return -v
}
}
return v
}