Tutorial: Go 시작하기

Tutorial: Go 시작하기

Go를 처음 만나면 무엇부터 해야 할지 막막할 수 있어요. 공식 튜토리얼이 딱 그 지점을 잡아 줍니다. Go를 설치하고 간단한 "Hello, World" 코드를 작성하고, go 명령으로 실행하는 흐름, 그리고 외부 모듈의 함수를 불러 쓰는 방법까지 한 번에 훑어볼 수 있어요.

출처: Tutorial: Get started with Go

Hello, World 작성하기

우선 코드를 담을 디렉터리를 만들고, 그 디렉터리에서 의존성 추적을 켜요. Go는 자기 코드와 다른 모듈에 있는 패키지 사이의 의존 관계를 go.mod 파일로 관리하는데, 이 파일을 만들기 위해 go mod init 명령을 실행해요.

mkdir hello
cd hello

모듈 경로는 실제 개발에서는 github.com/mymodule처럼 저장소 위치를 쓰는 경우가 많아요. 지금은 튜토리얼이니 example/hello로 진행할게요. 명령을 내리면 go: creating new go.mod: module example/hello라는 안내와 함께 go.mod가 생겨요.

$ go mod init example/hello
go: creating new go.mod: module example/hello

이제 hello.go 파일을 만들고 다음 코드를 넣어요. main 패키지 안에 main 함수를 두고 fmt 패키지의 Println으로 메시지를 출력하는 구조예요.

package main

import "fmt"

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

이 코드에서 짚어 볼 요소가 세 가지 있어요. 첫째, main 패키지는 같은 디렉터리의 파일들을 묶어 함수를 그룹화하는 단위예요. 둘째, fmt 패키지는 콘솔 출력을 포함한 텍스트 포맷 함수를 제공하는 표준 라이브러리 패키지예요. 셋째, main 함수는 main 패키지를 실행할 때 기본으로 동작하는 진입점이에요.

go run으로 실행해 볼게요.

$ go run .
Hello, World!

go run은 Go 명령 중 하나일 뿐이에요. 다른 명령들을 보려면 go help를 입력해 보세요.

외부 패키지의 코드 호출하기

누군가 이미 만들어 둔 기능을 쓰고 싶다면, pkg.go.dev 사이트에서 게시된 모듈을 찾을 수 있어요. 예를 들어 rsc.io/quote 모듈의 Go 함수를 불러 써 볼게요. 코드에서 rsc.io/quote를 import 하고 Go()를 호출하면 돼요.

package main

import (
    "fmt"

    "rsc.io/quote"
)

func main() {
    fmt.Println(quote.Go())
}

외부 모듈을 추가할 때는 go mod tidy를 실행해요. 이 명령은 코드가 import 한 패키지가 담긴 모듈을 찾아 go.mod의 require 목록에 추가하고, go.sum 파일까지 만들어 인증해 줘요.

$ go mod tidy
go: finding module for package rsc.io/quote
go: found rsc.io/quote in rsc.io/quote v1.5.2

다시 실행하면 외부 모듈이 만든 재미있는 메시지가 출력돼요.

$ go run .
Don't communicate by sharing memory, share memory by communicating.

여기까지 오면 Go 설치와 기초적인 실행, 외부 모듈 사용 흐름을 모두 경험해 본 거예요. 다음 단계로는 모듈을 직접 만들어 보는 Create a Go module 튜토리얼을 이어서 보면 좋아요.

더 알아보기