[Go 언어] 14. Go 언어 연산자 개요

안녕하세요. 언제나 휴일, 언휴예요.

 

프로그래밍은 컴퓨터로 하여금 특정 작업을 수행하게 하는 일련의 작업이예요. 이를 위해 작업을 수행하는 과정에서 데이터를 관리하기 위한 문법과 컴퓨터가 수행해야 할 작업을 위한 문법을 요구하죠. 앞에서 다루었던 변수와 형식은 데이터를 관리하기 위한 문법이죠. 이번에는 컴퓨터가 수행해야 할 문법 중에 가장 기초적인 연산자 문법을 다룰 거예요.

Go언어의 연산자에는 산술 계산에 필요한 부호 연산과 사칙연산, 나머지 연산, 증감 연산을 비롯하여 크기를 비교하는 연산, 논리 연산과 비트 연산과 쉬프트 연산, 특정 인덱스의 요소를 의미하는 인덱스 연산, 메모리 주소를 구하는 레퍼런스(참조) 연산 및 메모리 주소에 있는 값을 가져오거나 설정하는 역참조 연산과 채널 수신 연산 및 대입 연산이 있어요.

이러한 연산들은 프로그래밍 언어를 사용하기 위해 필수적으로 사용합니다. 다른 문법들을 사용하는 방법을 다루기 전에 기초적인 연산을 먼저 다루고 넘어가려고 해요. 하지만 모든 연산을 앞에서 다루는 것은 효과적이지 못합니다. 인덱스 연산은 슬라이스나 배열을 사용하기 위한 연산이며 참조 연산과 역참조 연산은 포인터 개념을 알아야 하고 채널 수신 연산은 채널을 알아야 하는데 이에 관한 사항은 여기에서 다루는 것은 효율이 떨어질 것이라 생각합니다.

다른 문법을 다루기 전에 비교적 이해하기 쉽거나 알고 넘어가야 할 것이라 생각하는 기초적인 연산들을 먼저 다루고 넘어가려고 해요.

여기에서는 부호 연산, 사칙 연산과 나머지 연산, 증감 연산, 비교 연산, 논리 연산, 비트 연산, 쉬프트 연산, 대입 연산 순으로 다룰 거예요.

종류 연산자
부호 + +i , 단항 연산자로 연산 결과는 피연산자와 똑같음(아무 효과없음)
-i , 단항 연산자로 연산 결과는 피연산자에 -1을 곱한 결과임
사칙 + 2+3, 이항 연산자로 연산 결과는 더한 결과
2+3, 이항 연산자로 연산 결과는 뺀 결과
* 2+3, 이항 연산자로 연산 결과는 곱한 결과
/ 2+3, 이항 연산자로 연산 결과는 나눈 결과
나머지 % 8%3, 이항 연산자로 연산 결과는 나누기에서의 나머지
증감 ++ i++, 단항 연산자로 연산 후에 i가 1 증가함
i–, 단항 연산자로 연산 후에 i를 1 감소함
비교 == i==j, 이항 연산자로 값이 같은지 비교, 연산 결과는 true 혹은 false
!= i!=j, 이항 연산자로 값이 다른지 비교, 연산 결과는 true 혹은 false
< i<j, 이항 연산자로 좌측 피연산자 값이 작은지  비교, 연산 결과는 true 혹은 false
<= i<=j, 이항 연산자로 좌측 피연산자 값이 작거나 같은지  비교, 연산 결과는 true 혹은 false
> i>j, 이항 연산자로 좌측 피연산자 값이 큰지  비교, 연산 결과는 true 혹은 false
>= i>=j, 이항 연산자로 좌측 피연산자 값이 크거나 같은지  비교, 연산 결과는 true 혹은 false
논리 && i&&j, 이항 연산자로 둘 다 참인지 확인, 연산 결과는 true 혹은 false
|| i||j, 이항 연산자로 둘 중 하나라도 참인지 확인, 연산 결과는 true 혹은 false
! !i, 단항 연산자로 피연산자가 참이면 false, 거짓이면 true가 연산 결과
비트 & i&j, 이항 연산자로 비트 단위로 and 연산 수행
| i|j, 이항 연산자로 비트 단위로 or 연산 수행
^ ^i, 단항 연산자로 쓰일 때는 1의 보수(반전)
^ i^j, 이항 연산자로 쓰일 때 비트 단위로 xor 연산
&^ i&^j, 이항 연산자로 비트 단위의 AND NOT 연산
쉬프트 << i<<j, 이항 연산자로 좌측 피연산자 값을 오른쪽 피연산자 값만큼 왼쪽으로 자리를 이동
>> i>>j, 이항 연산자로 좌측 피연산자 값을 오른쪽 피연산자 값만큼 오른쪽으로 자리를 이동
대입 = i=j, 이항 연산자로 우측 피연산자의 값을 좌측 변수에 설정
복합대입 +=,… i+=j,… 좌측과 우측 피연산자에 +(…) 연산 후에 좌측 변수에 설정