...

Package loopclosure

import "golang.org/x/tools/go/analysis/passes/loopclosure"
Overview
Index

Overview ▾

Package loopclosure defines an Analyzer that checks for references to enclosing loop variables from within nested functions.

Index ▾

Package files

loopclosure.go

Constants

const Doc = `check references to loop variables from within nested functions

This analyzer checks for references to loop variables from within a
function literal inside the loop body. It checks only instances where
the function literal is called in a defer or go statement that is the
last statement in the loop body, as otherwise we would need whole
program analysis.

For example:

    for i, v := range s {
        go func() {
            println(i, v) // not what you might expect
        }()
    }

See: https://golang.org/doc/go_faq.html#closures_and_goroutines`

Variables

var Analyzer = &analysis.Analyzer{
    Name:     "loopclosure",
    Doc:      Doc,
    Requires: []*analysis.Analyzer{inspect.Analyzer},
    Run:      run,
}