Go: Blank identifier (underscore)

The blank identifier _ is an anonymous placeholder. It may be used like any other identifier in a declaration, but it does not introduce a binding.

Ignore values

The blank identifier provides a way to ignore left-hand side values in an assignment:

_, present := timeZone["CET"]

sum := 0
for _, n := range a {
	sum += n
}

Import for side effects

It can also be used to import a package solely for its side effects:

import _ "image/png" // init png decoder function

Silence the compiler

It can be used to during development to avoid compiler errors about unused imports and variables in a half-written program:

package main

import (
	"fmt"
	"log"
	"os"
)

var _ = fmt.Printf // DEBUG: delete when done

func main() {
	f, err := os.Open("test.go")
	if err != nil {
		log.Fatal(err)
	}
	_ = f // TODO: read file
}

For an automatic solution, use the goimports tool, which rewrites a Go source file to have the correct imports. Many Go editors and IDEs run this tool automatically.

Comments

Be the first to comment!