Go에서 들여 쓰기 : 탭 또는 공백?


125

Go 소스 코드의 들여 쓰기에 탭 또는 공백이 선호되는지 여부를 설정하는 표준 Google Go 코딩 규칙 문서가 있습니까? 그렇지 않다면 (통계적으로) 더 인기있는 옵션은 무엇입니까?

  1. 공식 추천은 무엇입니까? (만약에 어떠한)
  2. 더 인기있는 선택은 무엇입니까?

답변:


195

공식적인 권장 사항은

go fmt

또는 gofmt 명령을 직접 사용

gofmt -w .

당신은 그것에 대해 더 많은 읽을 수 있습니다 여기 golang.org 블로그에, 또는에서 효과적인 이동의 문서 :

들여 쓰기
우리는 들여 쓰기 를 위해 탭을 사용하고 gofmt는 기본적으로 그것들을 내 보냅니다. 필요한 경우에만 공백을 사용하십시오.


59
좋아요, 탭입니다.
Erik Kaplun 2013 년

1
예, 들여 쓰기를위한 탭이 공식 권장 사항입니다. 당신은 할 수 @Intermernet가 지적으로 공간 들여 쓰기를 사용하지만, 그것은 추천하지 않습니다.
ANisus 2013 년

19
@ErikAllik, 실제로 공식적인 입장은 "탭 사용"이 아니라 " go fmt제출하기 전에 코드에 사용 "하는 것입니다 (도 있습니다 gofmt). 제가 시도하고있는 것은 Go 가 정책을 선언하는 것뿐만 아니라 정책을 시행하는 도구를 채택 함으로써이 작업을 올바르게 수행했다는 것입니다. 이것은 드문 일이므로이 아이디어에 대해 고개를 숙이고 go fmt. 자동화 된 솔루션도 있습니다 (예를 들어 Vim 용 공식 Go 플러그인은 :FmtIIRC 명령을 지원합니다 ).
kostix 2013 년


2
도구를 채택 / 요구한다고해서 모든 논쟁이 멈추지는 않는다는 점에 주목할 가치가 있다고 생각합니다. 그들의 독단적 선택).
mtraceur 2018

22

편집 2 : 하단의 원래 대답이 이제 잘못되었습니다. 링크 된 소스 파일 의 올바른 섹션 (현재 2019 년 12 월 30 일)은 다음과 같습니다.

Gofmt는 Go 프로그램을 포맷합니다. 들여 쓰기에는 탭을 사용하고 정렬에는 공백을 사용합니다. 정렬은 편집기가 고정 너비 글꼴을 사용한다고 가정합니다.

이것을 지적 해 주신 TehSphinX 에게 감사드립니다 !

이 줄 아래의 모든 정보가 이제 올바르지 않습니다.

편집 : 하단의 원래 답변이 이제 잘못되었습니다. 링크 된 소스 파일의 올바른 섹션 (현재 2014 년 7 월 25 일)은 다음과 같습니다.

Gofmt는 Go 프로그램을 포맷합니다.
들여 쓰기에는 탭 (너비 = 8)을 사용하고 정렬에는 공백을 사용합니다.

원래 답변 (지원 중단됨) :

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.

4
-tabs하고 -tabwidth있습니다 사라 (그리고 -comments, 더 자세히보고하지 않은 더 이상 적어도 문서화되지 않음)
윌리엄

2
@billisphere 감사합니다. 링크 된 파일의 관련 섹션으로 답변을 업데이트했습니다.
Intermernet 2014

5
탭 문자를 사용할 때 특정 탭 너비를 사용하는 것과 같은 것이 없으므로 (이전) 탭 너비 옵션은 효과가 없으며 업데이트 된 텍스트의 "너비 = 8"부분을 제거해야합니다. 탭 너비는 뷰어에서 구성됩니다. .이 오류는 링크 된 소스에 존재합니다.
thomasrutter

2
이것은 구식입니다. gofmt명령 문서에 탭 너비에 대한 언급이 더 이상 없습니다 . 그것은 여기에서 제거되었습니다 : github.com/golang/go/commit/...
TehSphinX을
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.