I am reading [A Tour of Go](https://tour.golang.org/moretypes/11) and get confused about a slicing case

```
s = s[:0]

```

After this operation, the `len()` of `s` becomes 0 but the `cap()` does not. Why is the capacity not decreased? When would one want to use this 'feature'?