1 조건문 개요

조건문은 프로그래밍에서 프로그램의 논리적 흐름을 제어하는 중요한 도구입니다. Golang에서 조건문은 다른 프로그래밍 언어와 유사하지만 고유한 특징을 가지고 있습니다. 이를 통해 참 또는 거짓 조건에 따라 어떤 코드를 실행할지 결정함으로써 코드의 유연성과 유지보수성을 크게 향상시킬 수 있습니다.

2 if 문

2.1 if 문의 기본적인 사용법

if 문은 Go 언어에서 가장 기본적인 조건문입니다. 그 구문은 다음과 같습니다:

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

간단한 예시는 다음과 같습니다:

package main

import "fmt"

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

이 코드는 x가 5보다 큰지 확인하고, 만약 그렇다면 출력 작업을 수행합니다.

2.2 조건식

조건식은 비교 연산자(예: ==, !=, <, >, <=, >=)와 논리 연산자(예: && (AND), || (OR), ! (NOT))로 이루어져 있습니다.

예를 들어, 변수가 특정 범위 내에 있는지 확인하려면:

y := 20
if y >= 10 && y <= 30 {
    fmt.Println("y는 10부터 30 사이입니다")
}

위의 조건식은 논리 연산자 &&를 사용하여 y의 값이 10과 30 사이에 있는지를 확인합니다.

2.3 if...else 및 else if 구조

if 조건이 충족되지 않을 때, else를 사용하여 대체 코드 블록을 실행할 수 있습니다. else if를 사용하면 여러 조건을 확인할 수 있습니다. 다음은 예시입니다:

score := 88

if score >= 90 {
    fmt.Println("뛰어남")
} else if score >= 80 {
    fmt.Println("좋음")
} else if score >= 70 {
    fmt.Println("보통")
} else {
    fmt.Println("평균 미만")
}

이 코드는 score의 값에 따라 다른 평가를 출력합니다.

3 switch 문

3.1 switch의 기본 구문

switch 문은 여러 값을 평가해야 하는 상황에 특히 적합한 더 간결한 조건 분기문입니다. switch 문의 기본 구문은 다음과 같습니다:

switch 식 {
case 값1:
    // 값1과 일치할 때 실행할 코드
case 값2:
    // 값2와 일치할 때 실행할 코드
default:
    // 기본적으로 실행할 코드
}

만약 의 값이 case 뒤의 값과 일치한다면, 해당 코드 블록이 실행됩니다.

3.2 switch의 fallthrough

Go의 switch 문에서는 fallthrough 키워드를 사용하지 않는 이상 각 브랜치가 기본적으로 다음 case로 넘어가지 않습니다.

switch num {
case 1:
    fmt.Println("하나")
    fallthrough
case 2:
    fmt.Println("둘")
default:
    fmt.Println("하나도 아니거나 둘도 아님")
}

위의 코드에서 num이 1이라면 case 1과 일치하지만, fallthrough 키워드가 있기 때문에 프로그램은 case 2의 코드를 계속 실행하고 "둘"을 출력합니다.

3.3 유형 분기 및 사용자 정의 분기

switch 문은 변수 유형에 기반한 분기, 즉 유형 분기를 지원합니다. 게다가, 필요에 따라 더 복잡한 사용자 정의 분기 조건을 생성할 수 있습니다.

유형 분기의 예시:

var i interface{} = 1

switch i.(type) {
case int:
    fmt.Println("i는 정수입니다")
case float64:
    fmt.Println("i는 float64입니다")
default:
    fmt.Println("i는 다른 유형입니다")
}

필요에 따라 더 복잡한 조건 판단을 수행하기 위해 사용자 정의 분기 조건을 작성할 수 있습니다.

4 실전 연습

본 섹션에서 실제 예제를 통해 Golang에서 조건문을 이해하고 적용합니다. ifswitch 문을 사용하여 실제 문제를 해결하는 것에 능숙해지게 될 것입니다.

학점 계산기

간단한 학점 계산기를 작성해봅시다. 이 프로그램은 사용자가 입력한 점수에 따라 해당하는 학점을 결정하고 출력합니다. 학점 기준은 다음과 같습니다:

  • 90 이상: A
  • 80에서 89: B
  • 70에서 79: C
  • 60에서 69: D
  • 60 미만: F

이 기능을 구현하기 위해 if 문 또는 switch 문을 사용할 수 있습니다. 먼저, if 문을 사용한 예제를 살펴보겠습니다:

package main

import (
	"fmt"
)

func main() {
	var score int
	fmt.Print("점수를 입력하세요: ")
	fmt.Scan(&score)

	if score >= 90 {
		fmt.Println("학점: A")
	} else if score >= 80 {
		fmt.Println("학점: B")
	} else if score >= 70 {
		fmt.Println("학점: C")
	} else if score >= 60 {
		fmt.Println("학점: D")
	} else {
		fmt.Println("학점: F")
	}
}

이 코드에서는 먼저 사용자가 입력한 점수를 저장할 score 변수를 선언합니다. 그런 다음 fmt.Scan 함수를 사용하여 사용자 입력을 받습니다. 그리고 ifelse if 문을 사용하여 점수에 해당하는 학점을 결정하고 fmt.Println 함수를 사용하여 학점을 출력합니다.

이제 switch 문을 사용한 예제를 살펴보겠습니다:

package main

import (
	"fmt"
)

func main() {
	var score int
	fmt.Print("점수를 입력하세요: ")
	fmt.Scan(&score)

	switch {
	case score >= 90:
		fmt.Println("학점: A")
	case score >= 80:
		fmt.Println("학점: B")
	case score >= 70:
		fmt.Println("학점: C")
	case score >= 60:
		fmt.Println("학점: D")
	default:
		fmt.Println("학점: F")
	}
}

switch 문을 사용한 예제에서 코드 구조가 더 간결하고 명확합니다. 여러 연속적인 ifelse if 문을 사용할 필요가 없으며, 대신 switch 다음의 각 case에 조건을 직접 지정합니다. 이전 case의 조건에 맞지 않는 점수는 자동으로 다음 case로 이동하여 해당하는 조건 부분에 일치하거나 default 케이스에 도달할 때까지 반복됩니다. default 케이스는 F 학점을 출력합니다.

이제 if 문과 switch 문을 사용하여 조건부 판단을 할 수 있게 되었으니, 여러분만의 프로그램을 작성하고 연습하여 실력을 늘려보세요.

다음 섹션에서는 Golang의 조건문을 활용하여 실용적인 문제를 소개하여 여러분이 조건문을 잘 익힐 수 있도록 도와드리겠습니다.

위 코드는 교육용 목적으로 제공된 것으로, 실제 응용 프로그램에서는 사용자 상호작용 및 오류 처리 등의 요소를 고려하여 더 견고하게 만들어져야 합니다.