조건문

조건문

조건문인 if/else에 대해 알아보자.


조건에 따른 실행과 흐름 분기


Go언어를 배우면서 자료형과 연산자, 선언에서 일정 부분은 우리가 입력한 코드에 대해 알아서 처리해줬기에 편리했지만 조건문은 몇 가지 엄격하다고 느낄 수 있는 특징이있습니다.
생각해보면 Go라는 언어는 부드러워보여도 나름의 기준 안에서 원칙을 고수합니다. 이러한 점이 Go 개발자들이 지향했던 것이자, 길게 봤을 때 Go언어를 사용하는 개발자들(Gopher)에게 좋은 코딩 습관을 심어주고 코드 자체도 누구나 쉽게 알아볼 수 있게끔 해주는 장점인 것 같습니다.

True/False


Go언어의 조건문의 조건식은 반드시 Boolean 형으로 표현돼야 합니다. Go언어에서 bool 형은 false와 true만 지원하는 것을 지난 강의에서 배웠습니다.

조건식의 괄호는 생략 가능


대부분의 언어들은 조건문에서 조건식을 쓸 때 if 옆에 괄호를 입력했을 것입니다. 예를 들어, "if(k==0)" 이렇게 말입니다. 하지만 Go언어에서는 "if k==0"과 같이 괄호를 생략해서 입력해도 됩니다.
Go에서는 생략해서 실행하는 것을 권장하고 Atom과 같은 에디터에서 패키지를 설치하고 실행한다면 괄호를 자동으로 생략해줍니다. 그리고 괄호를 쓴다고 해서 실행이 안 되지는 않습니다.

조건문의 중괄호는 필수


다른 언어에서는 조건문을 쓰면서 조건문이 한 줄일 때 조건 블럭을 표시하는 중괄호({})를 생략하는 경우가 있습니다. 하지만 Go언어에서는 반드시 중괄호를 입력해야합니다. 조건문을 작성할 때는 꼭 조건 블럭 안에 넣어야합니다.

괄호의 시작과 else문은 같은 줄에


Go언어는 어느정도는 개발자들 사이에서 통용되는 정석적인 코딩 방법을 따릅니다. 조건문이 시작하는 첫 번째 줄에(조건문이 아니더라도 함수같이 중괄호가 필요한 블록이 있다면) 블록 시작 브레이스({)를 입력해야 한다는 것입니다. 그렇지 않다면 런타임 에러가 발생해 실행할 수 없습니다.

package main

import "fmt"

func main() {
	var num int
	
	fmt.Print("정수입력 :")
	fmt.Scan(&num)

	if num == 1 {
		fmt.Print("hello\n")
	} else if num == 2 {
		fmt.Print("world\n")
	} else {
		fmt.Print("worng number..\n")
	}
}

조건식에 간단한 문장(Optional Statement) 실행 가능


Go언어에서는 조건식을 실행하기 전에 간단한 문장을 함께 실행할 수 있다. "if val := num*2 ; val==2" 와 같이 조건식 앞에 변수를 선언하고 식을 입력할 수 있다. 여기서 주의해야할 점은 조건식 전에 정의된 변수는 해당 조건문 블록에서만 사용할 수 있다는 것이다.
이러한 표현은 switch문, for문 등 여러 문법에서 사용할 수 있으니 알아둘 수 있도록 합니다.

package main

import "fmt"

func main() {
	var num int

	fmt.Print("정수입력 :")
	fmt.Scan(&num)

	if val := num * 2; val == 2 {
		fmt.Print("hello\n")
	} else if val := num * 3; val == 6 {
		fmt.Print("world\n")
	} else {
		fmt.Print("worng number..\n")
	}
}

© 2022. All rights reserved. 신동민의 블로그