한 눈에 끝내는 고랭 기초
    • 01
      시작하기에 앞서
    • 강의대상
      Go란?
      실습 환경 구축 - 구름IDE
      Hello goorm! 출력해보기
    • 02
      변수와 상수
    • 콘솔 출력 함수의 기본
      변수의 선언과 초기화
      상수의 선언과 초기화
      간단한 덧셈
      잘못된 신상정보
    • 03
      연산자
    • 연산자 종류
      연산자 우선순위
      콘솔 입력 함수의 기본
      간단한 덧셈과 곱셈
      몫과 나머지
    • 04
      자료형
    • 자료형의 종류와 특징
      문자열의 표현
      자료형의 변환
      강제 형 변환
    • 05
      콘솔 출력과 입력 함수
    • 콘솔 출력 함수(Print)
      콘솔 입력 함수(Scan)
      정돈된 표
      신상정보 입력과 출력
    • 06
      반복문 - for
    • 오로지 for
      구구단
      빛나는 이등변삼각형
    • 07
      조건문 - if/else
    • 조건에 따른 실행과 흐름 분기
      7과 9의 배수
      두 수의 차
    • 08
      분기문 - switch
    • swich문에 의한 선택적 실행
      안좋은 계산기
    • 09
      제어문
    • break, continue, goto문
      구구단2
      두 수를 더하면 99
    • 10
      컬렉션
    • 배열(Array)
      슬라이스(Slice)
      맵(Map)
      역행렬
      가장 긴 이름
      중간고사 평균 점수
    • 11
      함수
    • Go언어에서의 함수
      전역변수와 지역변수
      매개변수
      반환값(리턴값)
      익명 함수
      오름차순 정렬
      아이패드를 사주는 조건
      역학적 에너지
    • 12
      클로저
    • 외부 변수 접근 : 클로저
      동전 정리
    • 13
      구조체와 메소드
    • 구조체
      메소드
      성적 저장 프로그램
      역학적 에너지2
    • 14
      인터페이스(interface)
    • 메소드의 집합 인터페이스
      직육면체와 원기둥
    • 15
      defer와 panic()
    • 지연 처리 defer
      종료하는 panic(), 복구하는 recover()
      엘리베이터
      중간고사 평균 점수2
    • 16
      에러 처리
    • 에러 처리의 기본
      에러 출력 및 처리
      중간고사 평균 점수3
    • 17
      고루틴(Goroutine)
    • 비동기 프로세스의 기본
      고루틴의 활용
      고루틴 실습
    • 18
      채널(Channel)
    • 고루틴의 데이터 통로 : 채널
      비동기 채널과 버퍼
      동기 채널
      채널 닫기
      송신 전용, 수신 전용 채널
      채널 select문
      고루틴 실습2
      메시지 전송
      동기 채널 실습
      비동기 채널 실습
    • 19
      패키지(package)
    • 패키지의 개념
    • 20
      실전 프로젝트 - 마일리지 상점
    • 프로젝트를 시작하기 앞서
      실습모드에서 실습
      마일리지 상점의 주요 기능
      필수 구조체와 매인 메뉴
      잔여 수량, 잔여 포인트 구현
    • 21
      실전 프로젝트 - 주문하기, 장바구니 담기
    • 구매 구현(1)
      구매 구현(2)
      장바구니에 담기
      장바구니 확인(1)
      장바구니 확인(2)
    • 22
      실전 프로젝트 - 고루틴으로 배송하기
    • 배송 상태 확인(1)
      배송 상태 확인(2)
      배송 상태 확인(3)
      최종 코드
    조건에 따른 실행과 흐름 분기
    07 조건문 - if/else
    조건에 따른 실행과 흐름 분기

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


    저의 생각에는 프로그래밍의 꽃은 '조건문'이라고 생각합니다. 

    음료수 자판기를 생각해봅시다. '만약' 돈이 들어온다면 음료수를 선택할 수 있게끔 빨간 불이 뜹니다. 음료수를 선택했는데 '만약' 넣은 돈보다 비싼 음료를 선택하면 음료가 나오지 않습니다. '만약' 넣은 돈과 같거나 싼 음료를 선택하면 음료가 나옵니다. '만약' 잔돈이 있다면 잔돈을 반환합니다. 자판기같은 간단한 프로그램에도 다양한 조건에 의한 흐름 분기가 있습니다. 개발자 여러분들은 이러한 생각을 해본 적 있나요? 

    조건문의 중요함을 느꼈다면, 지금부터 Go언어의 조건문의 특징과 문법에 대해 알아보겠습니다.

    default


    True/False


    Go언어의 조건문의 조건식은 반드시 Boolean 형으로 표현돼야 합니다. Go언어에서 bool 형은 false와 true만 지원하는 것을 지난 강의에서 배웠습니다. C언어와 C++는 조건식에 1, 0과 같은 숫자를 쓸 수 있는 것과 대조적입니다.


    조건식의 괄호는 생략 가능


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


    조건문의 중괄호는 필수


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


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


    어떻게 보면 제일 중요한 부분입니다. 개발자들이 if ~else if문을 작성할 때 정말 다양한 방법으로 조건문을 작성합니다. 쉽게 말하자면 if ~else if문은 키워드가 반복해서 이어지는 독특한 구문이기 때문에 개행하는 방법이 개발자마다 다를 수 있다는 뜻입니다. 하지만 아시다시피 어느정도는 개발자들 사이에서 통용되는 정석적인 코딩 방법이 있습니다. Go언어는 바로 그것을 따릅니다. 조건문이 시작하는 첫 번째 줄에(조건문이 아니더라도 함수같이 중괄호가 필요한 블록이 있다면) 블록 시작 브레이스({)를 입력해야 한다는 것입니다. 그렇지 않다면 런타임 에러가 발생해 실행할 수 없습니다.

    아래 코드는 잘못된 조건문 예시입니다. 에러가 발생해 실행 되지 않습니다.

    go

    위 코드는 원칙을 벗어나 누가 보더라도 보기 안 좋은 코드라는 것을 알 수 있습니다.

    아래 코드를 바로 실행해보세요.

    go
    실행 결과를 확인해보세요!

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


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

    아래 코드를 바로 실행해보세요.

    go
    실행 결과를 확인해보세요!

    Go언어의 조건문을 모두 배웠습니다. 아래 예제를 바로 실행해보세요.

    go
    실행 결과를 확인해보세요!
    질문하기