Canonical guidance

Use when

Avoid

Preferred pattern

f, err := os.Open(name)
if err != nil {
	return err
}
defer f.Close()

_, err = io.Copy(dst, f)
if err != nil {
	return err
}

Anti-pattern

Explanation: This anti-pattern is tempting because short declarations are convenient, but one extra := can quietly change which variable later code sees.

Why

Related pages

Sources