Indentation in Go: tabs or spaces?

GoFormattingIndentationGofmt

Go Problem Overview


Is there a standard Google Go coding conventions document somewhere that sets whether tabs or spaces are preferred for indentation in Go source code?

What is the official recommendation, if any?

Go Solutions


Solution 1 - Go

The official recommendation is formatting your code with

go fmt

or using the gofmt command directly

gofmt -w .

You can read more about it here on the golang.org blog, or from the Effective go document:

>Indentation
> We use tabs for indentation and gofmt emits them by default. Use spaces only if you must.

Solution 2 - Go

EDIT 2: he original answer at the bottom is now incorrect. The correct section of the linked source file (current 30/12/2019) is:

>Gofmt formats Go programs. It uses tabs for indentation and blanks for alignment. Alignment assumes that an editor is using a fixed-width font.

Thanks to TehSphinX for pointing this out!

ALL INFO BELOW THIS LINE IS NOW INCORRECT

EDIT: The original answer at the bottom is now incorrect. The correct section of the linked source file (current 25/07/2014) is:

>Gofmt formats Go programs.
It uses tabs (width = 8) for indentation and blanks for alignment.

Original answer (deprecated):

Formatting control flags:
	-comments=true
		Print comments; if false, all comments are elided from the output.
	-tabs=true
		Indent with tabs; if false, spaces are used instead.
	-tabwidth=8
		Tab width in spaces.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionErik KaplunView Question on Stackoverflow
Solution 1 - GoANisusView Answer on Stackoverflow
Solution 2 - GoIntermernetView Answer on Stackoverflow