CS 공부/Go 언어

Go 언어 소개 및 기본 구조: 컴파일과 .go 파일 이해하기

0gineer 2025. 1. 5. 14:00

 

Go 언어(Go Programming Language, 혹은 Golang)는 Google에서 개발한 현대적인 프로그래밍 언어다. 컴파일 속도가 빠르고 문법이 간결하며, 동시성(concurrency)을 강력하게 지원하는 것이 특징이다. 이번 글에서는 Go 언어의 기본 구조와 컴파일 과정을 정리해보려고 한다.


1. Go 언어의 개요

Go는 컴파일 언어로, 소스 코드를 실행 파일로 변환한다. 이 과정은 간단하고 빠르며, 대규모 애플리케이션 개발에도 적합하다. Go 언어는 다음과 같은 특징을 가지고 있다:

  • 간결한 문법: 불필요한 문법 요소를 줄여 가독성과 생산성을 높인다.
  • 정적 타이핑: 변수의 타입이 명확히 정의되며, 실행 전에 오류를 검출할 수 있다.
  • 동시성 지원: 고루틴(goroutine)을 통해 병렬 처리를 효율적으로 구현할 수 있다.

2. Go 언어의 컴파일

Go에서 컴파일은 소스 코드를 실행 가능한 파일로 변환하는 과정이다. 여기에는 주로 go buildgo install 명령어를 사용한다.

(1) go build

  • 지정된 .go 파일을 컴파일하여 실행 파일을 생성한다.
  • 특징: 현재 디렉토리에 결과 파일을 생성하며, 지정한 파일만 컴파일한다.
go build main.go

(2) go install

• 패키지의 모든 소스 파일을 컴파일하고, 실행 파일을 $GOPATH/bin 디렉토리에 저장한다.
• 특징: 패키지 관리와 설치까지 포함하여, 프로젝트를 배포 가능한 상태로 준비한다. 알아서 패키지 import 해주기 때문에 존재만 하다면 import 일일이 하지 않고 편하게 써도 된다. (매우 파워풀한듯, c++에서 매번 include해줬던 거 신경을 안 써도 된다니.....????)

go install

3.  .go 파일의 기본 구조

Go 소스 코드는 .go 파일로 작성되며, 기본 구조는 다음과 같다.

package main

import "fmt"

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

 

(1) 주요 구성 요소

 

1. package:

  • 모든 Go 파일은 package 선언으로 시작한다.
  • main 패키지는 실행 가능한 프로그램의 시작점을 의미한다.

2. Import

  • 외부 패키지를 가져오는 선언부다.
  • 위 코드에서 "fmt"는 출력 기능을 제공하는 기본 패키지다.

3. Main 함수

  • Go 프로그램의 실행 시작점을 담당하는 함수다.
  • 반드시 하나의 main() 함수가 있어야 한다.

4. Go 파일과 디렉토리 규칙

  • UTF-8 형식:
    Go 소스 코드는 UTF-8 형식을 사용하며, 알파벳 뿐만 아니라 한글, 일본어, 한자 등 다양한 문자를 표현할 수 있다.
  • 파일 이름:
    파일 확장자는 .go여야 하며, 파일 이름은 해당 기능을 명확히 나타내는 것이 좋다.

요약

Go 언어는 간단하면서도 강력한 구조를 가지고 있다. 컴파일은 go build와 go install 명령어로 처리하며, .go 파일은 패키지 선언 → import → main 함수로 구성된다.

 

다음 글에서는 Go 언어의 문법을 정리하고, 코드 스타일링 도구인 gofmt에 대해서도 알아보려고 한다.