프론트 엔드/Go

[Go] Gofmt로 코드 서식 지정, Gofmt 도구

Koras02 2023. 1. 16. 16:22
728x90

이번 시간에는 gofmt를 사용해

코드 서식 지정과 도구를 사용하는 법을

알아보도록 하겠습니다.

 

gofmt로 코드 서식 지정하기

go에서는 괄호나 들여쓰기 같은 코드의

서식 지정 문제는 개발자 커뮤니티에서도 

자주 등장하는 논쟁거리입니다.

 

Go는 코드의 스타일을 자동으로 맞춰주는

gofmt 도구를 제공함으로써 이러한 논쟁을 

해결했습니다.

 

gofmt 도구를 사용하면 코드의 타일을

Go에서 사용하는 스타일 대로

맞춰줍니다.

// style 이 맞치 않은 코드
package main
import "fmt"

func main() {
	type Rect struct{
		width int // width
		height int  // height 
	}

	r := Rect{1, 2}; fmt.Println(r.width * 2 + r.height * 2)
}
// gofmt 를 사용한 스타일 코드
package main
import "fmt"

func main() {
	type Rect struct{
		width int // width
		height int  // height 
	}

	 r := Rect{1, 2}
      fmt.Println(r.width * 2 + r.height * 2)
}

gofmt 도구

gofmt는 Go를 설치하면 제공해주는

콘솔용 프로그램입니다.

 

명령 프롬프트에 gofmt -h를 입력해

gofmt의 사용법을 확인할 수 있습니다.

$ gofmt -h
usage: gofmt [flags] [path ...]
  -cpuprofile string
        write cpu profile to this file
  -d    display diffs instead of rewriting files
  -e    report all errors (not just the first 10 on different lines)
  -l    list files whose formatting differs from gofmt's
  -r string
        rewrite rule (e.g., 'a[b:len(a)] -> a[b:]')
  -s    simplify code
  -w    write result to (source) file instead of stdout

명령 프롬프트에 gofmt 파일명을 입력하면 스타일이 

맞춰진 코드를 볼 수 있습니다.

$ gofmt gofmt-style.go

package main

import "fmt"

func main() {
        type Rect struct {
                width  int // width
                height int // height
        }

        r := Rect{1, 2}
        fmt.Println(r.width*2 + r.height*2)
}

-w 옵션을 사용하면 스타일이 맞춰진

코드를 코드 원본 소스 파일에 다시 저장합니다.

$ gofmt -w gofmt-style.go

$ cat gofmt-style.go

package main

import "fmt"

func main() {
        type Rect struct {
                width  int // width
                height int // height
        }

        r := Rect{1, 2}
        fmt.Println(r.width*2 + r.height*2)
}

대부분의 개발용 에디터에서 

소스 코드를 저장할 때 

 

gofmt로 스타일을 정동해주는

플러그인이 있습니다.

 

참고 자료

 

 

Go 언어 웹 프로그래밍 철저 입문: 2.1.6 gofmt로 코드 서식 지정 - 1

더북(TheBook): (주)도서출판 길벗에서 제공하는 IT 도서 열람 서비스입니다.

thebook.io

 

GitHub - Koras02/go-tutorial-blog: https://koras02.tistory.com/category/%ED%94%84%EB%A1%A0%ED%8A%B8%20%EC%97%94%EB%93%9C/Go

https://koras02.tistory.com/category/%ED%94%84%EB%A1%A0%ED%8A%B8%20%EC%97%94%EB%93%9C/Go - GitHub - Koras02/go-tutorial-blog: https://koras02.tistory.com/category/%ED%94%84%EB%A1%A0%ED%8A%B8%20%EC%...

github.com