There's nothing *too* wrong here.  I'd probably write this exact code like this:

```go
if user.DerivedChannels == nil {
    opts := map[string]interface{}{
        "stale": false,
        "key": user.Name,
    }

    vres, err := auth.bucket.View("sync_gateway", "access", opts)
    if err != nil {
        return nil, err
    }

    [...]
}
```

But `ViewCustom` would make your looping a *little* easier by putting things in the right type on the way in.