개발/Go

[Golang] Go 언어 완전 초보 가이드: 제어문 (if, for, switch, select)

일요일좋아하는사람 2025. 5. 7. 20:19
728x90
반응형

Go 언어는 간결하면서도 강력한 제어문을 제공하여, 효율적이고 명확한 흐름 제어가 가능합니다. 이번 글에서는 Go 언어에서 제공하는 제어문들의 역할, 사용법, 다양한 옵션들을 포함하여 실제 예제까지 자세히 살펴보겠습니다.

제어문의 역할

제어문은 프로그램의 흐름을 조건에 따라 분기하거나 반복을 수행하도록 도와주는 구문입니다. Go 언어는 전통적인 C 계열 언어와 유사한 제어문을 가지면서도, 몇 가지 고유한 특징을 가지고 있습니다. 대표적인 제어문으로는 if, for, switch, select가 있으며, 각 제어문은 특수한 목적과 사용법을 가지고 있습니다.


if 문

역할

조건에 따라 코드 블록을 실행할지 말지를 결정합니다.

사용법

if 조건 {
    // 조건이 참일 때 실행되는 코드
}

예제

x := 10
if x > 5 {
    fmt.Println("x는 5보다 큽니다.")
}

결과

x는 5보다 큽니다.

if-else 문

역할

조건이 참일 때와 거짓일 때 각각 다른 코드를 실행합니다.

사용법

if 조건 {
    // 조건이 참일 때 실행
} else {
    // 조건이 거짓일 때 실행
}

예제

x := 3
if x > 5 {
    fmt.Println("x는 5보다 큽니다.")
} else {
    fmt.Println("x는 5보다 같거나 작습니다.")
}

결과

x는 5보다 같거나 작습니다.

else if 문

역할

여러 조건 중에서 하나를 선택적으로 실행합니다.

사용법

if 조건1 {
    // 조건1이 참일 때
} else if 조건2 {
    // 조건2가 참일 때
} else {
    // 모든 조건이 거짓일 때
}

예제

x := 7
if x > 10 {
    fmt.Println("x는 10보다 큽니다.")
} else if x > 5 {
    fmt.Println("x는 5보다 큽니다.")
} else {
    fmt.Println("x는 5보다 작거나 같습니다.")
}

결과

x는 5보다 큽니다.

for 문

역할

반복 작업을 수행합니다. Go에서는 while 문이 없고 for 문으로 모든 반복을 처리합니다.

사용법

  • 기본 형태
for 초기화; 조건; 후처리 {
    // 반복 실행할 코드
}
  • 조건만 있는 형태
for 조건 {
    // 조건이 참일 때 반복
}
  • 무한 루프
for {
    // 무한 반복
}

예제

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

결과

0
1
2

switch 문

역할

변수나 표현식의 값에 따라 여러 분기 중 하나를 선택합니다.

사용법

switch 변수 {
case 값1:
    // 값1일 때 실행
case 값2:
    // 값2일 때 실행
default:
    // 모든 case가 아닐 때 실행
}

예제

x := 2
switch x {
case 1:
    fmt.Println("1입니다.")
case 2:
    fmt.Println("2입니다.")
default:
    fmt.Println("1도 2도 아닙니다.")
}

결과

2입니다.

select 문

역할

Go 루틴과 채널을 사용할 때, 여러 채널 중에서 준비된 하나를 선택하여 처리합니다.

사용법

select {
case <-채널1:
    // 채널1에서 데이터 수신 시
case 채널2 <- 값:
    // 채널2에 데이터 송신 시
default:
    // 준비된 채널이 없을 때
}

예제

ch := make(chan int, 1)
ch <- 1
select {
case val := <-ch:
    fmt.Println("수신된 값:", val)
default:
    fmt.Println("수신할 데이터가 없습니다.")
}

결과

수신된 값: 1

실제 사용 예제: 피즈버즈 프로그램

for i := 1; i <= 15; i++ {
    if i%3 == 0 && i%5 == 0 {
        fmt.Println("FizzBuzz")
    } else if i%3 == 0 {
        fmt.Println("Fizz")
    } else if i%5 == 0 {
        fmt.Println("Buzz")
    } else {
        fmt.Println(i)
    }
}

결과

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz

이처럼 Go의 제어문은 간단하면서도 강력하게 프로그램의 흐름을 제어할 수 있도록 구성되어 있습니다. 다양한 옵션과 유연한 사용법을 익혀두면 효율적인 코드 작성을 할 수 있습니다.

728x90
반응형