기본 문법 알아보기

이재홍 http://www.pyrasis.com 2014.12.17 ~ 2015.02.07

 

Go 언어는 다른 언어와 달리 일부 문법의 작성 스타일을 강제하고 있습니다. 대표적인 문법이 { } (중괄호) 표기 방법입니다. 즉 다음과 같이 함수, 조건문, 반복문 등을 시작할 때는 반드시 같은 줄에서 중괄호를 시작합니다.

 

 

func main() {
	i := 10

	if i >= 5 {
		fmt.Println("5 이상")
	}

	for i := 0; i < 5; i++ {
		fmt.Println(i)
	}
}

이렇게 작성 스타일을 강제하면 여러 사람이 작성한 코드라 하더라도 일관성 있게 보이기 때문에 가독성이 높아지는 장점이 있습니다.

C, C++은 작성하는 사람에 따라 다양한 스타일의 코드가 나옵니다. 통일된 작성 규칙이 없기 때문에 같은 C, C++ 코드라 하더라도 전혀 다른 스타일이 나오기도 합니다. 따라서 스타일이 다르면 가독성이 떨어져 코드를 쉽게 읽고 이해하기가 힘듭니다.

Python은 들여쓰기를 문법으로 강제하기 때문에 각 개발자의 취향이 덜 드러나고, 코드가 일관성이 있습니다. Go 언어도 Python처럼 문법 스타일을 강제합니다. 그리고 컴파일러와는 별도로 문법 스타일을 자동으로 맞춰주는 gofmt 명령을 제공합니다. 예전처럼 한 명이 코드를 작성하는 시대가 아니기 때문에 일관성 있는 코드는 협업에서 가장 중요한 부분입니다.

Go 언어의 소스 코드는 유니코드(UTF-8) 형식입니다. 따라서 같은 소스 코드 안에서 알파벳, 한글, 일본어, 한자를 동시에 표현할 수 있습니다.

유니코드와 UTF-8
유니코드는 전 세계의 모든 문자를 일관되게 표현하고 다룰 수 있도록 설계된 표준입니다. 그리고 UTF-8은 유니코드를 저장하거나 전송하기 위한 인코딩 방식 중의 하나입니다.

유니코드를 지원하는 에디터는?
요즘 사용하는 에디터는 대부분 유니코드(UTF-8)을 지원합니다. 다음은 유니코드를 지원하는 대표적인 에디터입니다.

  • LiteIDE
  • Vim
  • Visual Studio
  • Sublime
  • AcroEdit
  • EmEditor

세미콜론

C, C++, Java, C# 등의 언어에서는 구문이 끝날 때 ; (세미콜론)을 붙입니다. Go 언어에서는 보통 구문 마지막의 세미콜론을 생략합니다.

fmt.Println("Hello, world!")

다음과 같이 한 줄에 여러 구문을 사용하려면 세미콜론으로 구분하면 됩니다. 보통 이런 스타일은 잘 사용하지 않으며 gofmt 명령으로 스타일을 맞추면 자동으로 여러 줄로 바뀝니다.

fmt.Println("Hello,");fmt.Println("world!")

주석

주석은 한 줄 주석과 범위 주석 두 가지가 있습니다. 다음은 한 줄 주석입니다.

// Hello, world!
// fmt.Println("Hello, world!")

var sum int = 1 + 2 // 더하기

다음은 범위 주석입니다. 범위 주석은 한 줄에서 부분만 주석으로 만들거나 여러 줄을 주석으로 만들 수 있습니다.

fmt.Println("Hello" /* 안녕하세요 */)

/*
fmt.Println("Hello,")
fmt.Println("world!")
*/

중괄호

Go 언어의 중괄호는 다음과 같이 구문의 맨 뒤에서 시작합니다.

func main() {
	var num int = 1
	if num == 1 {
		fmt.Println(num)
	}
}

함수와 제어문을 시작할 때는 반드시 같은 줄에서 중괄호를 시작합니다. 다음과 같이 중괄호를 새 줄부터 시작하면 컴파일 에러가 발생합니다.

func main()
{ // 컴파일 에러
	var num int = 1
	if num == 1
	{ // 컴파일 에러
		fmt.Println(num)
	}
}

Go 언어는 컴파일할 때 줄의 마지막에 세미콜론을 자동으로 붙입니다. 따라서 { (여는 중괄호)를 새 줄부터 시작하면 앞줄의 마지막에 세미콜론이 붙게 되므로 에러가 납니다.

들여쓰기

Go 언어는 들여쓰기에 탭(tab)을 사용합니다. 스페이스로 들여쓰기를 했더라도 gofmt 명령으로 소스를 정렬하면 모두 탭으로 바뀝니다.

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

gofmt 도구 사용하기
리눅스와 Mac OS X에서는 콘솔(터미널)에서, 윈도우는 명령 프롬프트(또는 PowerShell)에서 Go 소스 파일이 있는 디렉터리로 이동한 뒤 다음 명령을 실행합니다.

~$ cd $GOPATH/src/hello
~/hello_project/src/hello$ gofmt hello.go
package main

import "fmt"

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

gofmt는 소스 파일의 내용을 정렬하여 표준 출력으로 보여줍니다. 정렬된 내용을 원본 소스 파일에 다시 저장하려면 다음과 같이 -w 옵션을 사용하면 됩니다.

~/hello_project/src/hello$ gofmt -w hello.go

저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

01 June 2015