[GO] #2-1. 고랭 기본문법 (포맷팅, 주석, 명칭, 세미콜론)

Study·2021년 5월 16일
0

고랭

목록 보기
2/18
post-thumbnail

포맷팅

고랭은 gofmt 이란 도구를 통해서 쉽게 표준 포맷팅(들여쓰기, 수직정렬, 유지, 주석)을 재포맷팅하여 소스를 저장할 수 있다.

예를 들어 다음과 같은 소스를 확인해보자.

package main

import "fmt"

type T struct {
	name string // name of the object
	value int // int value
}

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

파일의 내용을 표준 포맷팅으로 출력하여 보기위해 cmd 에서 포맷팅한 결과를 확인해보자.

gofmt 파일이름

위 명령어를 입력하면 표준 포맷팅으로 출력되어 알아보기 쉽게 나타난다.

위 포맷팅 결과를 그대로 저장하기 위해서 다음 명령어를 실행해보자.

gofmt -w 파일이름

원문이 포맷팅 결과로 저장되어 나타나는 것을 확인할 수 있다.

매번 cmd 에서 저장하는 수고를 덜기 위해서 GoLand 에서 쉽게 실행할 수 있다.

파일을 우클릭하여 Go Tools -> Go Fmt File 을 통하여 포맷팅을 할 수 있다.
아니면 Ctrl + Alt + Shift + F 로도 가능하다.

주석

C 언어의 블록 주석 /**/ 과 C++ 의 한줄 주석 // 모두 가능

명칭

1. 패키지명

예 ) import "fmt"
위와 같이 fmt 패키지를 임포트하면 fmt.Println 과 같이 사용할 수 있다.
패키지는 소문자, 한 단어로만 부여하며 언더바(_)나 대소문자 혼용을 제거한다.
이는 간결함과 패키지를 타이핑하는 사람들의 편의성 때문이다.

또 다른 규칙으론 src/endcoding/base64 패키지encoding/base64 로 임포트된다.

패키지를 임포트하는 입장에선 패키지 내용을 참조하기 위해 패키지명을 사용하는데,
패키지 이름을 노출하는 지저분함을 피하기 위해서 bufio 패키지의 버퍼 리더를 BufReder 로 정의할 수도 있는데 이렇게 하지 않고 단순히 Reader 로 불린다.

이는 bufio.Reader 가 더 명확하고 간결하기 때문이며 임포트된 객체는 항상 패키지명과 함께 불려지기 때문에 bufio.Reader 는 io.Reader 와 충돌하지 않는다.

2. 게터

GO 는 getterssetters 를 제공하지 않음
그래도 스스로 사용하기 위해 만들 수 있지만 getter 이름에 Get 을 넣는 것은 GO 언어답지 않고 필수적이지도 않다.

필드 이름이 owner 라면 GetOwner 가 아닌 Owner (첫 문자가 대문자고, 패키지 밖으로 노출된다.) 로 사용하자.

패키지 밖으로 노출하기 위해 대문자 이름을 사용하여 필드 식별을 할 수 있는 hook 을 제공하게 된다.

setter 함수는 SetOwner 로 사용하자.

3. 인터페이스명

관례적으로 하나의 메소드를 갖는 인터페이스는 메소드에 -er 접미사를 붙여 에이전트 명사를 구사하자.
예로 Reader, Wirter 등이 있다. 이렇게 함수이름으로 의미를 알 수 있게 지켜나가는 것이 생산적이다.

Read, Writer 와 같이 각각의 용법과 의미를 가지고 있는 이름들은 피하자.
반대로 이미 잘 알려진 타입들이 메소드들과 같은 의미를 갖는 메소드를 구현하려고 한다면 ToString 이 아닌 String 을 이용하자.

4. 대소문자 혼합

마지막으로, GO 네이밍 규칙으로 여러 단어로된 이름을 명명할 땐 언더바(_) 대신 대소문자 혼합을 사용하자.

세미콜론

C 언어와 같이, GO 정식문법은 구문 종료를 위해 세미콜론을 사용하지만 소스상에선 나타나지 않는다. 구문 분석기를 통해 규칙을 스캔하는 과정에서 세미콜론을 자동으로 삽입하기 때문에

소스코드 상에서는 세미콜론을 사용하지 않는다.

그래서 GO 프로그램에서의 세미콜론은 for loop 변수 초기화, 조건, 진행 변수를 구분할 때만 사용한다.
또한 한 라인의 여러 문장을 구분할 때도 사용한다.

구문 분석기는 구문을 끝낼 수 있는 토큰 뒤에 새 라인이 오면, 세미콜론을 삽입한다.

if i < f(){g()
}

위와 같은 코드는 소괄호 ( 뒤에 새 라인이 오기때문에 중괄호 { 앞에 세미콜론이 추가가되어 예상치 못한 영향을 발생시킬 것이다. 그렇기 때문에 다음과 같이 작성해야 한다.

if i < f() {g()
}
profile
Study

0개의 댓글