Great.  I would make a small tweak to make this a little more idiomatic and cleaner

```go
switch v := reflect.ValueOf(array); v.Kind() {
  case reflect.Int: 
    if array.(int) != 1 {
      return plural
    }
  case reflect.Slice:
    if v.Len() != 1 {
      return plural
    }
  }
  return singular
}
```