In a [recent question](https://stackoverflow.com/q/58533613/1218512) a nested loop was being used that led to a data-race. `go vet` only caught some of the problems.

Using a simplified version:

```golang
for _, o := range ol {
        o := o // <- remove this: `go vet` does *NOT* complain
        for _, d := range dl {
            d := d // <- remove this: `go vet` will complain
            go func() {
                fmt.Printf("%03d %03d\n", o, d) // potential data-race
            }()
        }
    }

```

[Playground](https://play.golang.org/p/JhALssCu2-T)

`go vet` correctly detects the inner race-condition, but not the outer one.

Why is this? Too complex to keep track of scopes deeper than 2 levels?