| 163 | } |
| 164 | |
| 165 | func (m StringMap) GetNumber(key string) (float64, error) { |
| 166 | val, err := m.Get(key) |
| 167 | if err != nil { |
| 168 | return 0, err |
| 169 | } |
| 170 | |
| 171 | t := reflect.TypeOf(val) |
| 172 | |
| 173 | //nolint:exhaustive |
| 174 | switch t.Kind() { |
| 175 | case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: |
| 176 | return float64(reflect.ValueOf(val).Int()), nil |
| 177 | case reflect.Float32, reflect.Float64: |
| 178 | return reflect.ValueOf(val).Float(), nil |
| 179 | default: |
| 180 | return 0, fmt.Errorf("%w: expected a number, but received %T", errFieldTypeMismatch, val) |
| 181 | } |
| 182 | } |