01 Getting Started

Go language course for beginners


Go Programming language

Go는 정적 타입 네이티브 컴파일 언어입니다.

Go는 유저 레벨 쓰레드인 Goroutine을 사용하여 동시성을 제공합니다.

Goroutine의 기본 스택 크기는 2KB입니다 (Go 1.17.2 기준), 이는 pthread의 기본 스택 크기인 2MB보다 훨씬 작습니다.

Goroutine간의 정보 공유는 채널을 제공합니다, 이는 동시성 작업에서의 동기화 문제를 쉽게 해결해줍니다.

또한 문법 구조가 간단하고 가독성이 좋아서 대규모 프로덕선 어플리케이션에서도 사용하기 적합합니다.

Go는 메모리 관리에 GC를 사용해서 자동으로 메모리를 해제합니다.

Hello World!

// hello.go

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}
go build hello.go -o hello.exe

Go는 기본적으로 코드를 패키지 단위로 구분하며 하나의 디렉토리에는 하나의 패키지만 존재할 수 있습니다.

다른 패키지를 불러오려면 import "패키지명"를 사용합니다.

Go 컴파일러는 기본적으로 "main" 패키지를 컴파일합니다.

Go언어의 컴파일러는 기본적으로 "main" 패키지를 하나의 정적 링크된 바이너리로 컴파일합니다.

프로그램이 시작되면 main 패키지에 있는 main 함수를 실행합니다.

이 프로그램을 실행하면 아래와 같은 메시지가 출력됩니다.

Hello, World!

Go언어의 기본 타입

먼저 Go언어의 기본 타입을 알아보겠습니다.

정수형

Go는 정수형 타입으로 int8, uint8, int16, uint16, int32, uint32, int64, uint64, int, uint, uintptr를 제공합니다.

부호가 있는 정수형 타입은 "int"로 시작하고 부호가 없는 정수형 타입은 "uint"로 시작합니다.

"int"나 "uint"뒤에 붙은 8, 16, 32, 64는 각각 8, 16, 32, 64비트를 의미합니다.

uintptr은 해당 OS의 포인터 크기를 가지고 있습니다.

또한 intuint타입은 플랫폼에 따라 다른 크기를 가집니다. 64비트 OS에서는 64비트를 사용합니다.

실수형

Go의 실수형 타입에는 float32, float64가 있습니다.

float32는 32비트를 가지고 있으며 float64는 64비트를 가지고 있습니다.

float32float64모두 IEEE 754 표준에 따라 처리됩니다.

복소수형

자주 사용하는 타입은 아니지만 Go언어에서는 복소수형을 제공합니다.

complex64complex128가 있으며 각각 64비트와 128비트를 가지고 있습니다.

complex64는 32비트의 실수부와 32비트의 허수부를 가지고 있으며 complex128는 64비트의 실수부와 64비트의 허수부를 가지고 있습니다.

논리형

Go는 논리형 타입으로 bool을 제공합니다.

bool은 true또는 false를 가질 수 있으며 1바이트를 가집니다.

문자열 타입

Go에서의 문자열은 string 타입을 사용합니다.

문자 타입

Go는 유니코드를 저장하는 문자 타입을 제공합니다.

Go에서의 문자 타입은 rune를 사용합니다.

이는 32비트를 가지고 있으며 이모지나 알파벳을 저장할 수 있습니다.

배열

Go에서의 배열은 기본적으로 크기가 고정입니다.

[크기]타입를 사용하여 배열을 생성합니다.

예를 들어 [10]int는 10개의 정수를 가지는 배열을 생성합니다.

슬라이스

Go의 슬라이스는 cap과 len을 가지고 있는 배열입니다.

슬라이스의 cap은 내부 배열의 크기를 의미하며 len은 슬라이스의 크기를 의미합니다.

[]타입을 사용하여 슬라이스를 생성합니다.

맵 (map)

맵은 키와 값의 쌍으로 이루어진 데이터를 저장하는 자료구조입니다.

맵의 키는 비교 가능한 타입이어야 하며, 맵의 키는 해당 맵에서 유일합니다.

map[키타입]값타입을 사용하여 맵을 생성합니다.

What's next?

다음 포스트에서는 Go언어의 변수와 상수, 함수에 대해 알아보겠습니다.