# Why this isn't working

hi all, just wondering why type casting isn’t working

fails on 3, 4, NaN

``````type Kind int

const (
NaT Kind = iota + 1 // not a triangle
Equ                 // all sides equal
Iso                 // two sides equal
Sca                 // all sides different
)

func KindFromSides(a, b, c float64) Kind {

ma := map[int]interface{}{
1: a,
2: b,
3: c,
}

for i := 1; i <= 3; i++ {

if _, ok := ma[i].(string); ok {
return NaT
}

}

if a <= 0 || b <= 0 || c <= 0 {
return NaT
}

if (a+b+c)/3 == a {
if (a+b+c)/3 == b {
if (a+b+c)/3 == c {
return Equ
}
}
}

if a+b < c || b+c < a || c+a < b {
return NaT
}

if a == b || b == c || c == a {
return Iso
}

return Sca
}``````

This code seems to compile, could you please tell us what you mean by “it isn’t working”?

hi
trying to return NaT when user inputs (3, 4, NaN) invalid input

You need to use `math.IsNaN()` to check if one your values is not a number.

thanks a lot

``````for i := 1; i <= 3; i++ {

if b1 := math.IsNaN(ma[i].(float64)); b1 {
return NaT
}
if b2 := math.IsInf(ma[i].(float64), 0); b2 {
return NaT
}

}``````

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.