This is a compile error, so I don't think this matter
I modify the code , add float , it is the same.
func LimRange(x, low, high interface{}) float64 {
var fx, flow, fhigh float64
switch v := x.(type) {
case int: //OK
case int8:
case int16:
case int32:
case float32:
case float64:
return float64(v) //OK
default:
return math.NaN()
}
switch v := x.(type) {
case int,int8,int16,int32,float32,float64:
return float64(v) //Error: cannot convert v (type interface {}) to
type float64: need type assertion
default:
return math.NaN()
}
a :=1
switch a {
case 1,2: //OK
println("1,2")
}
return math.Max(math.Min(fx, fhigh), flow)
}
var Icolor int16 = 3
Icolor = int16(LimRange(Icolor, 0, 1))
println("Icolor=", Icolor)
在 2017年1月12日星期四 UTC+8上午9:21:29,kortschak写道:
>
> On Wed, 2017-01-11 at 17:15 -0800, hui zhang wrote:
> > switch v := x.(type) {
> > case int,int8,int16,int32:
>
> What type is v here? It can't be any of the four types you have listed
> in the case since are not assignable to each other without conversion,
> so it must be an interface{}. interface{} cannot be converted to
> float64 without an assertion to a numerical type first.
>
> > return float64(v)
> > default:
>
>
>
>
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.