소개
할 일 계획을 만들 때, 작업이 아직 완료되지 않았다면 할 일 목록에 추가되고, 완료되었다면 완료된 항목으로 이동됩니다.
프로그래밍 세계에서도, 우리는 다양한 요구 사항에 따라 프로그램의 방향을 변경해야 합니다. 다음으로, 흐름 제어 문인 if 분기문에 대해 알아보겠습니다.
지식 포인트:
if문if-else문else-if문- 서식 규칙
할 일 계획을 만들 때, 작업이 아직 완료되지 않았다면 할 일 목록에 추가되고, 완료되었다면 완료된 항목으로 이동됩니다.
프로그래밍 세계에서도, 우리는 다양한 요구 사항에 따라 프로그램의 방향을 변경해야 합니다. 다음으로, 흐름 제어 문인 if 분기문에 대해 알아보겠습니다.
지식 포인트:
if 문if-else 문else-if 문가장 일반적으로 사용되는 분기문은 if 문입니다. 이 문은 미리 설정된 조건이 참인지 확인한 다음 코드 블록을 실행할지 여부를 결정합니다. 형식은 다음과 같습니다.
if condition {
code block
}
조건이 참이면 프로그램은 코드 블록을 실행하고, 그렇지 않으면 코드 블록을 건너뜁니다.
실제 예제를 살펴보겠습니다. if.go라는 새 파일을 만들고 다음 코드를 작성합니다.
cd ~/project
touch if.go
package main
import (
"fmt"
)
func main() {
var num = 40
// Get the remainder of dividing two numbers using %
if num % 2 == 0 {
fmt.Println(num, "is even")
}
}
프로그램을 실행합니다.
go run if.go
결과는 다음과 같습니다.
40 is even
이 프로그램에서 먼저 정수 변수 num을 선언합니다. 그런 다음 if 문에서 나머지 연산자 %를 사용하여 num을 2 로 나눈 나머지를 구하고, 동등 연산자 ==를 사용하여 나머지가 0 과 같은지 확인합니다. 만약 그렇다면, 코드 블록이 실행되어 숫자가 짝수임을 출력합니다.
if 문의 조건이 충족되지 않을 때 다른 내용을 출력하려면 어떻게 해야 할까요? 이 경우 if else 문을 사용할 수 있습니다. if 문의 조건이 참이면 if 문 내의 코드 블록을 실행하고, 그렇지 않으면 else 문 내의 코드 블록을 실행합니다.
if else 문의 형식은 if 문과 유사합니다.
if condition {
code
} else {
code
}
예제를 살펴보겠습니다. 다음 프로그램은 오늘이 평일인지 주말인지 출력합니다.
cd ~/project
touch if_else.go
package main
import (
"fmt"
"time"
)
func main() {
// Get the current time
t := time.Now()
// Check whether it is Saturday or Sunday
if t.Weekday() == time.Saturday || t.Weekday() == time.Sunday {
fmt.Println("Today is:", t.Weekday(), "weekend")
} else {
fmt.Println("Today is:", t.Weekday(), "weekday")
}
}
프로그램을 실행합니다.
go run if_else.go
결과는 다음과 같습니다.
Today is: Monday weekday
표준 라이브러리의 time 패키지를 사용하여 현재 시간을 가져옵니다. 그런 다음 토요일 및 일요일과 비교하여 주말이면 if 문 내의 코드 블록이 실행되고, 그렇지 않으면 else 문 내의 코드 블록이 실행됩니다.
단일 조건 외에도 else if 문을 사용하여 여러 조건을 확인할 수 있습니다.
형식은 다음과 같습니다.
if condition {
code
} else if condition {
code
} else {
code
}
분기문에서는 여러 개의 else if 문을 가질 수 있지만, if 문과 else 문은 각각 하나씩만 가질 수 있습니다. else if 문은 if 문과 else 문 사이에 위치해야 합니다.
"if else" 섹션의 프로그램을 다시 작성하여 요일을 출력해 보겠습니다.
if_else.go 파일을 업데이트합니다.
package main
import (
"fmt"
"time"
)
func main() {
today := time.Now().Weekday()
if today == time.Monday {
fmt.Println("Today is Monday")
} else if today == time.Tuesday {
fmt.Println("Today is Tuesday")
} else if today == time.Wednesday {
fmt.Println("Today is Wednesday")
} else if today == time.Thursday {
fmt.Println("Today is Thursday")
} else if today == time.Friday {
fmt.Println("Today is Friday")
} else if today == time.Saturday {
fmt.Println("Today is Saturday")
} else {
fmt.Println("Today is Sunday")
}
}
프로그램을 실행합니다.
go run if_else.go
실행 후 결과는 다음과 같습니다.
Today is Monday
이전 프로그램에서는 먼저 time.Now()를 사용하여 현재 시간을 가져온 다음, 현재 시간에서 요일을 가져왔습니다. 이 프로그램에서는 이 두 줄의 코드가 한 줄로 결합되었습니다. 요일을 얻은 후, 분기문과 일치시켜 요일을 출력합니다.
이전 학습에서 if 문은 조건이라는 하나의 매개변수만 가졌습니다.
if condition {
code
}
전체 매개변수에는 초기화 문 (initialization statement) 도 포함되어 있으며, 이는 Go 에서 선택적 매개변수입니다. 일반적으로 임시 변수의 선언 및 초기화에 사용되며, 초기화 문은 사용 시 세미콜론으로 구분됩니다. 구문은 다음과 같습니다.
if initialization statement; condition {
code
}
"if else" 섹션의 프로그램을 다시 작성했습니다. 변수 선언을 if 문으로 이동하여 초기화 문으로 사용함으로써 코드를 단축했습니다.
package main
import (
"fmt"
"time"
)
func main() {
if t := time.Now(); t.Weekday() == time.Saturday || t.Weekday() == time.Sunday {
fmt.Println("Today is:", t.Weekday(), "weekend, studying and recharging")
} else {
fmt.Println("Today is:", t.Weekday(), "also studying hard")
}
}
프로그램을 실행합니다.
go run if_else.go
정상적으로 실행되는 것을 확인할 수 있습니다.
Today is: Monday also studying hard
참고: 초기화 문에서 선언된 변수의 범위는 if 블록 내에서만 유효합니다.
Go gopher 여러분은 if 문을 배우면서 Go 의 형식 요구 사항을 눈치챘는지 모르겠습니다.
if, else, else if는 오른쪽 중괄호 }와 같은 줄에 있어야 합니다.else if 및 else 키워드도 이전 왼쪽 중괄호와 같은 줄에 있어야 합니다. 그렇지 않으면 컴파일러가 컴파일 시 구문 오류를 보고합니다.else 문을 다음 줄로 이동한 후 프로그램을 실행하면 컴파일러가 구문 오류를 보고합니다.
이 랩에서는 if 분기 문에 대해 설명했으며, 다음 주요 내용을 포함합니다.
if 분기 코드 블록에는 여러 개의 else if 문이 있을 수 있지만, if 문과 else 문은 각각 하나씩만 있을 수 있습니다.else if 문은 if 문과 else 문 사이에 위치해야 합니다.if 문에서 초기화 문 (initialization statement) 을 사용하여 코드를 단축할 수 있습니다.if, else, else if가 중괄호와 같은 줄에 있어야 함을 강제합니다.