golang의 팩스는 gofmt를 사용할 수 있습니다

5320 단어 Go

추기


gofmt뿐만 아니라 gorename도 리셋에 사용할 수 있습니다. 단순한 텍스트 교환만으로 순조롭게 진행되지 않으면 gorename을 사용하세요!
@mattn의 글
구글의 팩스에는 gofmt를 사용하지 말고 gorename을 사용하십시오.

개요


골랑이 팩스 귀찮지 않아요?예를 들어 퍼블릭 방법을provate로 바꾸려면 이 방법의 알파벳을 대문자에서 소문자로 바꿔야 하는데 편집하는 곳이 많나요?
왜 이렇게 귀찮아!내 생각엔 역시 골랑이야. 팩스 도구를 준비했어. 그리고 평소에 자주 쓰는 gofmt가 그거야.

팩스에 gofmt 사용하기


출전: https://golang.org/cmd/gofmt/
꼭 건드리세요.

사용법


flag에서 다음 옵션을 지정하고 path에서 golang 파일을 지정합니다.
gofmt [flags] [path ...]
평상시 사용하는go fmtgofmt -l -w는 같다.

옵션


flag
설명-d포맷기 적용 시 차이점만 표시-e모든 오류 표시(오류가 있을 수 있음)-l포맷할 파일 이름만 보이기-r rule지정한 규칙을 적용할 때의 코드를 표시합니다. (파일을 다시 쓰지 않습니다.)-s단순화 코드 결과 표시-w포맷할 파일 덮어쓰기

예제


포맷기 적용 시 차분 보이기(적용 대상으로 들여쓰기)
% gofmt -d foo.go
diff da.go gofmt/da.go
--- /tmp/gofmt443368917 2014-09-04 17:00:11.000000000 +0900
+++ /tmp/gofmt933503792 2014-09-04 17:00:11.000000000 +0900
@@ -1,8 +1,8 @@
 package foo

 import (
-"fmt"
-"sort"
+       "fmt"
+       "sort"
 )
대상 파일 이름 표시
% gofmt -l foo.go
foo.go

팩시밀리

-r 매개변수에 대한 옵션 추가
pattern -> replacement
형식으로 변환을 지정합니다. 기본적으로 간단한 변환입니다. 그러나 소문자 하나는 모든 요소와 일치하는 어댑터로 사용할 수 있습니다. 예를 들어, 그룹의 record[0:len(records)]records[0:] 로 바꾸려면 a[b:len(a)] -> a[b:] 로 지정하십시오.
% gofmt -r 'a[b:len(a)] -> a[b:]' -d foo.go
diff foo.go gofmt/foo.go
--- /tmp/gofmt374308561 2014-09-04 17:43:33.000000000 +0900
+++ /tmp/gofmt670076412 2014-09-04 17:43:33.000000000 +0900
@@ -21,7 +21,7 @@
                {ID: 22, Name: "orange"},
        }

-       for i, _ := range records[0:len(records)] {
+       for i, _ := range records[0:] {
                fmt.Printf("id: %d, name: %s", r.ID, r.Name)
        }
        fmt.Println(records[0].ID, fruite[0].ID)
기본적으로 간단한 교체이기 때문에 서로 다른 구조의 구성원이 같은 이름을 가지거나 변수가 같은 이름을 가지면 모두 전환된다.
% gofmt -r 'ID -> Hoge' -d foo.go
diff foo.go gofmt/foo.go
--- /tmp/gofmt984846593 2014-09-04 17:53:09.000000000 +0900
+++ /tmp/gofmt966547564 2014-09-04 17:53:09.000000000 +0900
@@ -1,31 +1,31 @@
 package foo

 type Record struct {
-       ID   int
+       Hoge int
        Name string
 }

 type Fruite struct {
-       ID   int
+       Hoge int
        Name string
 }

 func main() {
        records := []Record{
-               Record{ID: 1, Name: "johon"},
-               Record{ID: 2, Name: "robert"},
+               Record{Hoge: 1, Name: "johon"},
+               Record{Hoge: 2, Name: "robert"},
        }

        fruites := []Fruites{
-               {ID: 11, Name: "apple"},
-               {ID: 22, Name: "orange"},
+               {Hoge: 11, Name: "apple"},
+               {Hoge: 22, Name: "orange"},
        }

        for i, _ := range records[0:len(records)] {
-               fmt.Printf("id: %d, name: %s", r.ID, r.Name)
+               fmt.Printf("id: %d, name: %s", r.Hoge, r.Name)
        }
-       fmt.Println(records[0].ID, fruite[0].ID)
+       fmt.Println(records[0].Hoge, fruite[0].Hoge)

-       var ID = 1
-       fmt.Println(ID)
+       var Hoge = 1
+       fmt.Println(Hoge)
 }
멤버만 바꾸고 싶다면 a.ID -> a.Hoge로만 바꿀 수 있다. 그러나 그것만으로는 구조체의 정의를 바꿀 수 없기 때문에 주의해야 한다.
만약 이 점을 아는 사람이 있다면 나에게 알려주시오

후기


golint라는 내용이 있기 때문에 코드를 검사하면서 팩스를 보내면 골뱅이 스타일의 코드가 될 것 같아요. 그런데 자꾸 불편하다고 느껴지니까vim,emacs,eclipse를 알려주시면 돼요

좋은 웹페이지 즐겨찾기