Programming language/Golang

[Go] 09 조건문

chaenii 2022. 1. 12. 21:35

본 게시물은 Tucker의 Go언어 프로그래밍을 참고해 작성한 게시물입니다.

http://www.yes24.com/Product/Goods/99108736

 

Tucker의 Go 언어 프로그래밍 - YES24

게임 회사 서버 전문가가 알려주는 Go 언어를 내 것으로 만드는 비법구글이 개발한 Go는 고성능 비동기 프로그래밍에 유용한 언어이다. 『Tucker의 Go 언어 프로그래밍』은 Go 언어로 ‘나만의 프로

www.yes24.com

 

if문 기본 사용법

if문은 조건에 따라 분기하는 구문이다.

만족하는 조건문의 {}안에 있는 문장을 실행한다.

만족하는 조건문이 없으면 else 구문 {}안에 있는 문장을 실행한다.

	light := "red"

	if light == "green" {
		fmt.Println("길을 건넌다.")
	} else {
		fmt.Println("대기한다.")
	}

 

그리고 &&, 또는 ||

&&와 ||는 논리 연산자이다.

&&는 AND를 의미하고, '그리고'로 해석하며, ||은 OR을 의미하고 '또는'으로 해석한다.

&&은 양쪽이 모두 true인 경우만 true이며, ||은 둘 중 하나만 true여도 true이다.

	var age = 35

	if age >= 10 && age <= 15 {
		fmt.Println("you are young")
	} else if age > 30 || age < 20 {
		fmt.Println("you are not 20s")
	}

 

쇼트셔킷

&&연산은 좌변이 false이면 우변을 검사하지 않고 false 처리한다.

|| 역시 좌변이 true이면 우변은 검사하지 않고 true 처리한다. 

이를 쇼트셔킷

따라서 우변이 실행되지 않을 수 있다는 것을 염두해두고 코드를 구현해야 한다.

var cnt = 0

func IncreaseAndReturn() int {
	fmt.Println("IncreaseAndReturn()", cnt)
	cnt++
	return cnt
}

func main() {
	if false && IncreaseAndReturn() { // 함수가 호출되지 않는다.
		fmt.Println("1 증가")
	}

	if true && IncreaseAndReturn() { //  함수가 호출되지 않는다.
		fmt.Println("2 증가")
	}
}

 

소괄호 () 사용

소괄호를 활용해 다양한 조건문을 쉽게 만들 수 있다.

 

중첩 if

if문안에 if문을 중첩해 사용할 수 있다.

예를 들어 식당에서 밥값이 오만원 넘게 나왔을 때 부자 친구가 있다면 신발끈을 묶고, 그렇지 않으면 나눠내는 상황을 아래와 같이 중첩 if문으로 나타낼 수 있다.

if price > 50000 {
    if HasRichFriend() {
        fmt.Println("신발끈 묶어야지~")
    } else {
        fmt.Println("n빵")
    }
}

 

if 초기문; 조건문

if문 조건을 검사하기 전에 초기문을 넣을 수 있다.

if 초기문; 조건문 {
   문장
}

초기문 자리에 하나의 구문이 올 수 있으며, 끝에 ;를 붙여서 구문이 끝남이 표시합니다. 그리고 조건문을 넣는다.

초기문에서 선언한 변수의 범위는 if문 안으로 한정된다는 사실에 주의해야 한다.

func getMyAge() (int, bool) {
	return 30, true
}

func main() {

	if age, ok := getMyAge(); ok && age < 20 {
		fmt.Println("you are young", age)
	} else if ok && age < 30 {
		fmt.Println("Nice age", age)
	} else if ok {
		fmt.Println("You are beautiful", age)
	} else {
		fmt.Println("Error")
	}

	// fmt.Println("Your age is", age) // Error - age는 소멸되었음
}

 

 

 

반응형