Merry Chritmas !
1. 연산자
이번 강좌에서는 Go 언어에서 사용하는 연산자에 대해 알아보겠습니다.
연산자에는 여러 종류의 연산자가 있습니다.
모두 다 외울 필요는 없습니다!
아래 표에 정리된 연산자들에 대해서 배워보도록 하겠습니다.
분류 |
연산자 |
수식 연산자 |
+, -, *, /, % |
증감 연산자 |
++, -- |
할당 연산자 |
=, :=, +=, -=, *=, /=, %=, &=, |=, ^=, &^=, =<<, =>> |
논리 연산자 |
&&, ||, ! |
관계 연산자 |
==, !=, <, <=, >, >= |
비트 연산자 |
&, |, ^, &^, <<, >>, ^ |
채널 연산자 |
<- |
메모리(?) |
&, * |
(1) 수식 연산자
수식 연산자에는 덧셈, 뺄셈, 나눗셈, 그리고 나눗셈을 한 뒤의 나머지 구하는 연산자들이 있습니다.
아래에는 그 연산자들을 표로 정리한 것입니다.
분류 |
기능 |
설명 |
+ |
덧셈 |
두 값을 더합니다. ※ 값의 자료형은 정수, 실수, 복소수, 문자열입니다. |
- |
뺄셈 |
두 값을 뺍니다. ※ 값의 자료형은 정수, 실수, 복소수입니다. |
* |
곱셈 |
두 값을 곱합니다. ※ 값의 자료형은 정수, 실수, 복소수입니다. |
/ |
나눗셈 |
두 값을 나눕니다. ※ 값의 자료형은 정수, 실수, 복소수입니다. |
% |
나머지 |
두 값을 나눈 뒤 나머지를 구합니다. ※ 값의 자료형은 정수입니다. |
아래에 있는 코드는 수식 연산자를 사용하여 그 결과를 출력하는 예제입니다.
(2) 증감 연산자
분류 |
기능 |
설명 |
++ |
값을 1만큼 증가 |
값을 1만큼 증가합니다. Go 언어에서는 ++연산자를 사용한 뒤 값을 대입할 수 없습니다. 변수 뒤에서만 사용할 수 있습니다. ex) count++ (O), bount := count++ (X) ※ 값의 자료형은 정수, 실수, 복소수입니다. |
-- |
값을 1만큼 감소 |
값을 1만큼 감소합니다. Go 언어에서는 --연산자를 사용한 뒤 값을 대입할 수 없습니다. 변수 뒤에서만 사용할 수 있습니다. ex) count-- (O), bount := count-- (X) ※ 값의 자료형은 정수, 실수, 복소수입니다. |
(3) 할당 연산자
할당 연산자에서는 말 그대로 연산을 한 뒤에 그 값을 할당합니다.
아래에는 그 연산자들을 표로 정리한 것입니다.
분류 |
기능 |
설명 |
= |
대입 |
변수나 상수에 값을 대입합니다. ※ 변수는 변수끼리 대입을 할 수 있습니다. |
:= |
변수 선언 및 대입 |
변수 선언 및 대입 변수를 선언하는 동시에 값을 대입할 수 있습니다. |
+= |
덧셈 후 대입 |
현재 변수와 값을 더한 후에 다시 변수에 대입합니다. ※ 문자열일 경우 현재 변수에 문자열을 붙인 다음 다시 변수에 대입합니다. |
-= |
뺄셈 후 대입 |
현재 변수에서 값을 뺀 다음 다시 변수에 대입합니다. |
*= |
곱셈 후 대입 |
현재 변수에서 값을 곱한 다음 다시 변수에 대입합니다. |
/= |
나눗셈 후 대입 |
현재 변수에서 값을 나눈 다음 다시 변수에 대입합니다. |
%= |
값의 나머지를 대입 |
현재 변수와 값의 나머지를 변수에 대입합니다. |
&= |
AND 비트 연산 후 대입 |
현재 변수를 값으로 AND 연산한 다음 다시 변수에 대입합니다. |
|= |
OR 비트 연산 후 대입 |
현재 변수를 값으로 OR 연산한 다음 다시 변수에 대입합니다. |
^= | XOR 비트 연산 후 대입 | 현재 변수를 값으로 XOR 연산한 다음 다시 변수에 대입합니다. |
&^= | AND NOT 비트 연산 후 대입 | 현재 변수를 값으로 AND NOT 연산한 다음 다시 변수에 대입합니다. |
<<= | 비트를 왼쪽으로 이동 후 대입 | 현재 변수를 값 만큼 왼쪽으로 이동한 다음 다시 변수에 대입합니다. |
>>= | 비트를 오른쪽으로 이동 후 대입 | 현재 변수를 값 횟수만큼 오른쪽으로 이동한 다음 다시 변수에 대입합니다. |
아래에 있는 코드는 할당 연산자를 사용하여 그 결과를 출력하는 예제입니다.
bit
(4) 논리 연산자
논리 연산자는 참, 거짓 두가지 원소만 존재하는 집함에서의 연산입니다.
흔히 비트 연산이라고도 합니다.
밑에 있는 표는 연산자들의 진리표입니다.
A |
B |
OUT |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
[ && 연산자의 진리표 ]
A |
B |
OUT |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
[ || 연산자의 진리표 ]
A |
OUT |
0 |
1 |
1 |
0 |
[ ! 연산자의 진리표 ]
아래에 있는 코드는 논리 연산자를 사용하여 그 결과를 출력하는 예제입니다.
(5) 관계 연산자
관계 연산자는 두 값의 관계를 알아보는 연산자입니다.
크기를 비교하거나 값이 서로 같거나 다른지 확인하는 연산자들이 있습니다.
아래는 관계 연산자를 표로 정리해 둔 것입니다.
분류 |
기능 |
설명 |
== |
같음 |
두 값이 같으면 참을 반환하며 다를 경우 거짓을 반환합니다. |
!= |
다름 |
두 값이 다르면 참을 반환하며 다를 경우 거짓을 반환합니다. |
< |
작음 |
왼쪽 값이 크면 참을 반환하며 다를 경우 거짓을 반환합니다. |
<= |
같거나 작음 |
오른쪽 값과 왼쪽 값이 같거나 왼쪽 값이 클 경우 참을 반환하며 다를 경우 거짓을 반환합니다. |
> |
큼 |
오른쪽 값과 왼쪽 값이 같거나 왼쪽 값이 클 경우 참을 반환하며 다를 경우 거짓을 반환합니다. |
>= |
같거나 큼 |
오른쪽 값과 왼쪽 값이 같거나 왼쪽 값이 클 경우 참을 반환하며 다를 경우 거짓을 반환합니다. |
아래에 있는 코드는 관계 연산자를 사용하여 그 결과를 출력하는 예제입니다.
(6) 비트 연산자
비트 연산자는 말 그대로 비트를 다루는 연산자입니다.
아래는 비트 연산자를 표로 정리해 둔 것입니다.
분류 |
기능 |
설명 |
& |
AND 비트 연산 |
두 값을 비트 단위로 AND 연산을 합니다. |
| |
OR 비트 연산 |
두 값을 비트 단위로 OR 연산을 합니다. |
^ |
XOR 비트 연산 |
두 값을 비트 단위로 XOR 연산을 합니다. ※ 사용할 수 있는 값의 자료형은 정수입니다. |
&^ |
AND XOR 비트 연산 |
두 값을 비트 단위로 AND NOT 연산을 합니다. ※ 사용할 수 있는 값의 자료형은 정수입니다. |
<< |
비트를 왼쪽으로 이동 |
현재 값의 비트를 값 만큼 왼쪽으로 이동합니다. ※ 사용할 수 있는 값의 자료형은 정수입니다. |
>> |
비트를 오른쪽으로 이동 |
현재 값의 비트를 값 만큼 오른쪽으로 이동합니다. ※ 사용할 수 있는 값의 자료형은 정수입니다. |
아래에 있는 코드는 비트 연산자를 사용하여 그 결과를 출력하는 예제입니다.
(7) 채널 연산자
채널 연산자는 채널을 사용할 때 이용하는 연산자입니다.
채널이랑 고루틴끼리 데이터를 주고 받고, 실행 흐름을 제어하는 기능입니다.
이 채널이라는 것은 후에 자세히 설명할 예정이오니 이러한 녀석도 있구나! 하고 보시면 되겠습니다.
아래는 채널 연산자를 표로 정리해 둔 것입니다.
분류 |
기능 |
설명 |
<- |
채널 수신 연산 |
채널에 값을 보내거나 값을 가져옵니다. |
아래에 있는 코드는 채널 연산자를 사용하는 예제입니다.
(8) 메모리(?)
이걸 연산자라고 해야될지 뭐라해야할 지 잘 모르겠습니다...
그냥 설명을 안할까 싶기도 했지만 그냥 하는 것이 좋을 것 같아 추가로 작성하겠습니다.
이 녀석은 쉽게 생각하자면 포인터같은 개념입니다.
메모리에 접근이 가능합니다.
아래는 메모리를 접근할 수 있는 아이들을 표로 정리해 둔 것입니다.
분류 |
기능 |
설명 |
& |
참조 |
현재 변수의 메모리 주소를 구합니다. |
* |
역 참조 |
현재 포인터 변수에 저장된 메모리에 접근하여 값을 가져오거나 저장합니다. |
이번 강좌에 많은 연산자들에 대한 설명이 끝났습니다.
이 긴 글을 읽어주셔서 감사합니다.
다음 강좌에서는 패키지 사용법과 조건문에 대해 알아보도록 하겠습니다.
'0x0a Programming > 0x0b Go Lang' 카테고리의 다른 글
Go 강좌 6편. 반복문(for, continue) (0) | 2016.01.06 |
---|---|
Go 강좌 5편. 패키지(Package)와 조건문(if, else, switch) (1) | 2015.12.30 |
Go 강좌 3편. 변수(Variable), 상수(Constant) (0) | 2015.12.08 |
Go 강좌 2편. 안녕? Stop? GO! (31) | 2015.12.03 |
Go 강좌 1편. 시작 (126) | 2015.12.02 |