spf13 / cast

safe and easy casting from one type to another in Go

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

doesn't handle named types

josharian opened this issue · comments

I'd expect this test to pass:

func TestToFloat64NamedType(t *testing.T) {
	type X float64
	f := ToFloat64(X(2))
	if f != 2.0 {
		t.Fatalf("want %#v, got %#v", 2.0, f)
	}
}

The fix is pretty easy. Near the beginning of ToFloat64E, just after the call to indirect, add something like:

	v := reflect.ValueOf(i)
	if v.CanFloat() {
		return v.Float(), nil
	}

I'm filing an issue rather than sending a PR because the proper fix applies this to all conversions, not just floats, and that's a pretty substantive change, so I wanted to discuss first.