포맷팅 (Formatting)
- 원문 : Formatting
- 번역자 : MinJae Kwon (@mingrammer)
포맷팅 이슈는 중요한 것은 아니지만 가장 논쟁거리이다. 사람들은 각자 다른 포맷팅 스타일을 적용할 수도 있지만, 모든 사람들이 같은 스타일을 고수하여 더 이상 그럴 필요가 없어지고, 포맷팅 주제에 덜 신경을 쓰게된다면 더 좋을 것이다. 문제는 길고 규정적인 스타일 가이드 없이 어떻게 이 유토피아에 접근할 수 있는 가이다.
Go에서 우리는 새로운 접근법을 택하며, 머신에게 대다수의 포맷팅 이슈를 처리하도록 할 수 있다. gofmt
프로그램 (go fmt
로도 사용할 수 있으며, 이는 소스 파일이 아닌 패키지 레벨에서 실행된다)은 Go 프로그램을 읽은 뒤, 표준 스타일의 들여쓰기와 수직정렬, 유지 그리고 필요시 주석을 재포맷팅한 소스를 내놓는다.
예를 하나 들면, Go에서는 구조체의 필드에 적힌 주석을 정렬하는데 신경을 쓸 필요가 없다. Gofmt
가 대신해 줄 것이다. 아래를 보자.
type T struct {
name string // name of the object
value int // its value
}
gofmt
는 각 열을 다음과 같이 정렬할 것이다
type T struct {
name string // name of the object
value int // its value
}
표준 패키지들에 있는 모든 Go 코드는 gofmt
로 포맷팅이 되어있다.
몇 가지 포맷팅에 대한 상세한 내용이 남아있는데, 이를 매우 간단하게 요악해보면 다음과 같다.
들여쓰기
들여쓰기를 위해 탭(tabs)을 사용하며,
gofmt
는 기본값으로 탭을 사용한다. 만약 꼭 써야하는 경우에만 스페이스(spaces)를 사용하라.
한 줄 길이
Go는 한 줄 길이에 제한이 없다. 길이가 길어지는것에 대해 걱정하지 마라. 만약 라인 길이가 너무 길게 느껴진다면, 별도의 탭을 가지고 들여쓰기를하여 감싸라
괄호
Go는 C와 Java에 비해 적은 수의 괄호가 필요하다. 제어 구조들(
if
,for
,switch
)의 문법엔 괄호가 없다. 또한 연산자 우선순위 계층이 간단하며 명확하다. 아래를 보자.
x<<8 + y<<16
다른 언어와는 다르게 스페이스의 사용이 함축하는 바가 크다.