Connecting

Go 언어 조건문 / 분기문 / 반복문 사용하기 본문

Go 언어

Go 언어 조건문 / 분기문 / 반복문 사용하기

팬도라 2020. 7. 12. 13:37
반응형

조건문 / 분기문 / 반복문

if 사용하기

if 문은 해당 조건이 만족하면 {}안에 코드를 수행합니다. 다만 다른 언어와 다르게 조건식을 ()를 작성하지 않아도 되지만 반드시 Boolean 형식으로 작성해야 하며, 해당 문법을 같은 라인에 두어야 합니다. 이를 어기게 될 경우 에러가 발생합니다. 다음은 기본적인 if 문법을 사용한 예제입니다.

package main

import f "fmt"

func main() {
    num := 10

    if num <= 10 {
        f.Println("10 보다 작거나 같다")
    }
}

다른 프로그래밍 언어와 같이 if ~ else 문도 같이 사용가능합니다. 어떠한 조건이 충족되지 않을 경우 if ~ else 문으로 넘어가게 되고, 모든 조건이 충족되지 않을경우 else 문으로 넘어갑니다. 다음 예제에서는 어떠한 숫자를 입력하고 그 숫자가 특정 숫자보다 큰지 작은지 확인하는 예제입니다.

package main

import f "fmt"

func main() {
    var num int
    f.Println("1 ~ 10까지의 정수 하나를 입력")
    f.Scanln(&num)

    if num >= 1 && num <= 5 {
        f.Println("숫자는 1보다 크고 5보다 작다")
    } else if num >= 6 && num <= 10 {
        f.Println("숫자는 6보다 크고 10보다 작다")
    } else {
        f.Println("잘못 입력 했습니다.")
    }
}

참고로 Go 언어에는 삼항 조건문이 없습니다. 따라서 간단한 조건문이라도 완전한 if 문을 사용해야 합니다.

switch 사용하기

go 언어에서 switch 여러 분기에 걸친 조건문들 사용하기에 적당합니다. 다만 다른 언어와 다르게 switch 문에 사용되는 break를 사용하지 않아도 된다는 특징이 있습니다.

아래는 기본 switch 문을 사용하는 예제입니다.

package main

import f "fmt"

func main() {
    var number int
    f.Println("Input number")
    f.Scanln(&number)

    switch number {
    case 1:
        f.Println("1")
    case 2:
        f.Println("2")
    case 3:
        f.Println("3")
    default:
        f.Println(number)
    }

만약에 case 문장을 실행하고 다음 case 문장을 실행하고 싶다면 다음은 fallthrough 키워드를 사용합니다. 다름 예제를 통해 확인해 보도록 하겠습니다.

test := 1
    switch test {
    case 1:
        f.Println("1")
        fallthrough
    case 2:
        f.Println("2")
        fallthrough
    case 3:
        f.Println("3")
        fallthrough
    default:
        f.Println("default")
    }

swith 문을 활용하여 현재가 무슨 요일인지 확인하는 예제를 작성해 보도록 하겠습니다. 먼저 시간을 구하기 위한 Time 함수를 사용하며, 구해진 시간을 활용하여 일주일에서 어떤 요일인지 확인하는 작업이 필요합니다. Go 언어에서는 구현하고자 하는 패키지가 이미 존재하기 때문에 간단하게 구할 수 있습니다. 다음 예제를 확인하세요.

package main

import (
    f "fmt"
    "time"
)

func main() {

    currentTime := time.Now()
    f.Println("현재 시간 : ", currentTime)

    weekday := time.Now().Weekday()

    switch weekday {
    case time.Monday:
        f.Println("월요일")
    case time.Tuesday:
        f.Println("화요일")
    case time.Wednesday:
        f.Println("수요일")
    case time.Thursday:
        f.Println("목요일")
    case time.Friday:
        f.Println("금요일")
    default:
        f.Println("주말")
    }
}

for 사용하기

다른 프로그래밍 언어와 다르게 for는 Go의 유일한 루프 구조입니다. C / C++ / JAVA와 같은 구조를 가지고 있기 때문에 익숙하게 사용할 수 있습니다. for를 사용하기에 앞서서 Go 언어에서는 다음과 같은 구조를 가지고 있습니다.

  1. 하나의 조건을 갖는 가장 기본적인 유형
  2. 기본적인 초기화/조건/후연산 for 루프
  3. 조건이 없는 for는 루프 밖으로 break 하거나 함수 내부에서 return을 하기 전까지 계속 반복 (루프의 다음 반복을 위해 continue를 사용할 수 있습니다.)
i := 1
    for i <= 3 {
        fmt.Println(i)
        i = i + 1
    }
    for j := 7; j <= 9; j++ {
        fmt.Println(j)
    }
    for {
        fmt.Println("loop")
        break
    }
    for n := 0; n <= 5; n++ {
        if n%2 == 0 {
            continue
        }

추후 range, 채널 그리고 다른 자료구조들을 살펴볼 때 몇가지 다른 형태의 for문을 활용할 것입니다. 다음 2가지 예제를 통해 for문을 익숙해 지도록 하겠습니다.

package main

import f "fmt"

func main() {
    i := 1
    for i <= 3 {
        f.Println(i)
        i = i + 1
    }

    for j := 7; j <= 9; j++ {
        f.Println(j)
    }

    for {
        f.Println("loop")
        break
    }

    for n := 0; n <= 5; n++ {
        if n%2 == 0 {
            continue
        }
        f.Println(n)
    }
}
package main

import f "fmt"

func main() {
    var number int

    f.Println("Multiplication table")
    f.Scanln(&number)

    for i := 0; i < 10; i++ {
        f.Println(number, " * ", i, " = ", number*i)
    }

    f.Println("------------------------------------")

    for i := 0; i < 5; i++ {
        if i == 3 {
            f.Println("3이 되었습니다.")
            break
        }
    }

    f.Println("------------------------------------")

    for i := 0; i < 5; i++ {
        for j := 0; j < 5; j++ {
            if j == 3 {
                continue
            }
            f.Println(i, j)
        }
    }
}

'Go 언어' 카테고리의 다른 글

Go 언어 함수 사용하기  (2) 2020.07.14
Go 언어 배열 / 슬라이스 / 맵  (0) 2020.07.12
Go 언어에서 변수 설정하기  (0) 2020.07.07
Go 언어 설치하고 개발환경 셋팅하기  (0) 2020.07.07
Go 언어 컨셉 이해하기  (0) 2020.07.07
Comments