Code Formatting in Go: Using gofmt and goimports

반응형

Go 언어는 개발자의 생산성과 코드의 읽기 쉬움을 중요시하는 언어입니다.
그 중에서도 코드 포맷팅은 Go 언어의 핵심 특징 중 하나입니다.

Go 언어에서는 gofmtgoimports 두 가지 주요 도구를 통해 코드를 깔끔하고 일관성 있게 유지할 수 있습니다.

 
 
 

gofmt

gofmt는 Go 언어의 표준 도구로, 모든 Go 개발자가 흔히 사용합니다.

gofmt는 코드를 읽기 좋고 일관된 스타일로 자동 포맷팅해줍니다.

gofmt를 사용하면 코드에 일관성을 부여할 수 있으며, 불필요한 논쟁을 피하고 코드 리뷰에 집중할 수 있습니다.

# 현재 디렉토리의 모든 .go 파일을 gofmt로 포맷팅합니다.
gofmt -w .

gofmt는 기본적으로 import 섹션을 알파벳 순서대로 정렬합니다.

 

아래는 gofmt를 적용하기 전의 Go 코드입니다.

package main

import (
    "github.com/user/project"
    "fmt"
    "os"
)

func main() {
    fmt.Println("Hello, world.")
}

위 코드를 gofmt로 포맷팅하면, 다음과 같이 변경됩니다.

package main

import (
    "fmt"
    "github.com/user/project"
    "os"
)

func main() {
    fmt.Println("Hello, world.")
}

 
 
 

goimports

goimportsgofmt의 모든 기능을 포함하며, 추가적으로 코드에서 사용하지 않는 import를 자동으로 제거하고 필요한 import를 추가합니다.

개발자는 import 문을 신경 쓰지 않고 코드 작성에 집중할 수 있습니다.

# 현재 디렉토리의 모든 .go 파일을 goimports로 포맷팅합니다.
goimports -w .

 

아래는 goimports를 적용하기 전의 Go 코드입니다.

package main

import (
    "github.com/user/project"
    "fmt"
    "os"
)

func main() {
    fmt.Println("Hello, world.")
}

 

위 코드를 goimports로 포맷팅하면, 다음과 같이 변경됩니다.

package main

import (
    "fmt"
    "os"

    "github.com/user/project"
)

func main() {
    fmt.Println("Hello, world.")
}

 

goimports는 표준 라이브러리 패키지와 나머지 패키지를 분리하고, 각 그룹 내에서 알파벳 순서대로 정렬합니다.

이렇게 하면 코드의 가독성이 향상됩니다.
 
 

gofmtgoimports는 모두 터미널에서 사용할 수 있지만, 대부분의 텍스트 에디터나 IDE는 이 도구들을 자동으로 실행하는 옵션을 제공합니다. 이를 활용하면 저장할 때마다 자동으로 코드를 포맷팅할 수 있습니다.



참고

  1. https://golang.org/cmd/gofmt/
  2. https://pkg.go.dev/golang.org/x/tools/cmd/goimports