한 눈에 끝내는 고랭 기초
    • 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)
      최종 코드
    연산자 종류
    03 연산자
    연산자 종류

    이전 강의에서 변수와 상수에 대해 배웠습니다. 변수와 상수는 값을 저장하는 기능만 합니다. 따라서 저장한 값을 가지고(저장하지 않은 값도) 연산을 하기 위해서는 '연산자'를 사용해야합니다. 연산자의 종류와 기능은 다른 언어들과 비슷하지만 몇 가지 주의해야할 점이 있으므로 천천히 살펴보기를 바랍니다.


    수식 연산자


    수식 연산자는 두 개의 피연산자를 요구하는 이항 연산자(binary operator)입니다. 다른 언어들과 마찬가지로 기본적인 사칙연산이 있고, 값을 나눈 나머지 값을 반환하는 연산자가 있습니다.


    종류

    기능

    설명
    +
    피 연산자의 값을 더한다.
    값의 자료형은 정수, 실수, 복소수, 문자열입니다.
    -
    왼쪽의 피연산자 값에서 오른쪽의 피연산자 값을 뺀다.
    값의 자료형은 정수, 실수, 복소수입니다.
    *
    피연산자의 값을 곱한다.
    값의 자료형은 정수, 실수, 복소수입니다.
    /
    왼쪽의 피연산자 값을 오른쪽의 피연산자 값으로 나눈다
    값의 자료형은 정수, 실수, 복소수입니다.
    %

    왼쪽의 피연산자 값을 오른쪽의 피연산자 값으로 나눴을 때 얻게 되는 나머지 값을 반환한다.

    ex) num := 7 % 2

    (num = 1이 할당됨)

    값의 자료형은 정수, 실수, 복소수입니다.

    주의할 점은 + 연산자는 문자열 결합도 가능하다는 것입니다.


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

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

    증감 연산자


    증감 연산자는 값을 1만큼 증가시키거나 감소시키는 연산자입니다. Go언어에서 증감 연산자를 사용할 때 주의할 점이 두 가지가 있습니다. 첫 번째는 증감 연산자를 사용하고 동시에 대입할 수 없습니다. 두 번째는 전위 연산을 할 수 없습니다. 아래 예시가 있습니다.

    • num := count++ (X)
    • ++count (X)


    종류기능설명
    ++값을 1 증가시킨다.값의 자료형은 정수, 실수, 복소수입니다.
    --값을 1 감소시킨다.값의 자료형은 정수, 실수, 복소수입니다.


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

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

    할당 연산자


    할당 연산자는 값을 단순히 대입하는 대입 연산자와 연산 후 값을 바로 대입시키는 복합 대입 연산자가 있습니다.


    종류기능설명
    =변수나 상수에 값을 대입한다.
    변수는 변수끼리 대입이 가능합니다.
    :=변수를 선언 및 대입한다.

    +=값을 더한 후 대입한다.
    문자열일 경우 현재 변수에 문자열을 이어 붙인 다음 변수에 대입합니다.
    -=값을 뺀 후 대입한다.

    *=값을 곱한 후 대입한다.

    /=값을 나눈 후 대입한다.

    %=값의 나눗셈 후 나머지를 대입한다.

    &=값의 AND 비트 연산 후 대입한다.

    |=값의 OR 비트 연산 후 대입한다.

    ^=값의 XOR 비트 연산 후 대입한다.

    &^=값의 AND NOT 비트 연산 후 대입한다.

    <<=비트를 왼쪽으로 이동 후 대입한다.

    >>=비트를 오른쪽으로 이동 후 대입한다.


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

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

    논리 연산자


    논리 연산자는 익숙하게 알고있는 다른 언어들과 똑같습니다. AND(논리곱), OR(논리합), NOT(논리부정)을 연산합니다. 예시는 변수 A와 B로 들겠습니다. 주의할 점은 Go언어에서 논리부정 연산시 bool 형의 선언 및 사용만이 가능합니다. 즉, false와 true값만 사용할 수 있습니다. 아래 예시가 있습니다.

    var a int = 10, b := 1 일 때,

    • fmt.Println(!a) (X)
    • fmt.Println(!b) (X)


    종류기능설명
    &&연산하는 A와 B모두 ‘참'이면 연산 결과로 ‘참'을 반환합니다.

    1&&0=0

    1&&1=1

    0&&0=0

    ||연산하는 A와 B 둘 중 하나라도 ‘참'이면 연산 결과로 ‘참’을 반환합니다.

    1||0=1

    1||1=1

    0||0=0

    !연산하는 A가 ‘참'이면 ‘거짓', ‘거짓'이면 ‘참'을 반환합니다.

    !1=0

    !0=1


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

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

    관계 연산자


    관계 연산자는 두 값의 대소와 동등의 관계를 따지는 연산자입니다. 관계 연산자는 조건을 만족하면 true를, 만족하지 않으면 false를 반환합니다.


    종류기능설명
    ==두 값이 같은지 비교한다.
    같을 경우 ‘true’, 다를 경우 ‘false’를 반환한다.
    !=두 값이 다른지 비교한다.
    다를 경우 ‘true’, 같을 경우 ‘false’를 반환한다.
    <오른쪽 값이 큰지 비교한다.
    오른쪽 값이 큰 경우 ‘true’, 그렇지 않을 경우 ‘false’를 반환한다.
    <=오른쪽 값이 크거나 같은지 비교한다.
    오른쪽 값이 크거나 같은 경우 ‘true’, 그렇지 않을 경우 ‘false’를 반환한다.
    >왼쪽 값이 큰지 비교한다.
    왼쪽 값이 큰 경우 ‘true’, 그렇지 않을 경우 ‘false’를 반환한다.
    >=왼쪽 값이 크거나 같은지 비교한다.
    왼쪽 값이 크거나 같은 경우 ‘true’, 그렇지 않을 경우 ‘false’를 반환한다.


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

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

    비트 연산자


    비트 연산자는 비트 단위의 연산을 진행하는 연산자입니다. 비트 연산자는 사실 기계에 좀 더 친화적인 연산자지만 다른 영역에도 사용돼 효율성을 높이고 연산의 수를 줄이는 요인이 되기도 합니다. 활용적 측면을 이해하기엔 큰 부담이 따르기 때문에 연산자의 기능을 이해하는 데 초점을 맞추어 정리합니다.


    종류기능설명
    &두 값을 비트 단위로 AND 연산을 한다.

    |두 값을 비트 단위로 OR 연산을 한다.

    ^두 값을 비트 단위로 XOR 연산을 한다.
    사용할 수 있는 값의 자료형은 정수입니다.
    &^두 값을 비트 단위로 AND NOT 연산을 한다.
    사용할 수 있는 값의 자료형은 정수입니다.
    <<값의 비트 열을 왼쪽으로 이동시킨다.
    사용할 수 있는 값의 자료형은 정수입니다.
    <<값의 비트 열을 오른쪽으로 이동시킨다.
    사용할 수 있는 값의 자료형은 정수입니다.


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

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

    채널 연산자


    Go언어는 채널이라는 개념이 있습니다. 간단히 말하자면 채널이랑 고루틴(goroutine)끼리 데이터를 주고 받고 실행 흐름을 제어하는 기능입니다. 채널에 관한 상세한 내용은 채널 챕터에서 다루겠습니다. 채널 연산자는 채널을 사용할때 쓰는 연산자입니다.


    종류기능설명
    <-채널의 수신을 연산한다.채널에 값을 보내거나 가져옵니다.


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

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

    포인터 연산자


    포인터 연산자는 C++언어와 같이 &와 *연산자를 이용해 메모리에 접근할 수 있도록 합니다. 주의할 점은 Go언어는 포인터 연산자를 제공하지만 포인터 산술 즉, 포인터에 더하고 빼는 기능은 제공하지 않습니다.


    종류기능설명
    &변수의 메모리 주소를 참조한다.
    *포인터 변수에 저장된 메모리에 접근하여 값을 참조한다.


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

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

    지금까지 여러 종류의 연산자를 다뤄봤습니다. 프로그래밍을 익숙한 개발자들은 기본적인 내용이라고 지나칠 수 있지만, 다른 언어들과의 차이점이 여러 군데 있습니다. 직접 실행해보고 차이점을 익히기 바랍니다. 

    질문하기