Go언어의 연산자
- 산술연산자, 관계연산자, 논리연산자, Bitwise연산자, 복합할당연산자, 포인터연산자
산술연산자:
-사칙연산자: 더하기, 빼기,곱하기, 나누기, 나머지 등 숫자 계산에 사용됩니다.
+ 더하기
- 빼기
* 곱하기
/ 나누기(몫)
% 나누기(나머지)
-증감연산자:
++ : 변수에 1 증가 개념. i++ // (i = i + 1) 복합할당연산자로 표시시 (i += 1)
-- : 변수에 1 감소 개념. i-- // (i = i -1) 복합할당연산자로 표시시 (i -= 1)
관계연산자: 값을 비교할때 사용합니다. 같다, 크다, 작다, 다르다
== 같다
!= 다르다
< 작다
> 크다
>= 크거나 같다
<= 작거나 같다
논리연산자: 참(true),거짓(false) 계산에 사용함.
AND, && = 둘다 참이면 참(그리고 개념)
OR, || = 둘중에 하나만 참이어도 참(또는 개념)
NOT, ! = 다르면 참(부정 개념, 참이면 거짓이고, 거짓이면 참)
Bitwise연산자: 비트를 조작할때 사용합니다.
& : AND 개념( 둘다 1이면 1)
| : OR 개념( 둘중에 하나만 1이면 1)
^ : XOR 개념(둘이 다르면 1)
<< : 왼쪽으로 비트 이동 ( 2의 제곱 곱하기)
비트를 왼쪽으로 밀고, 빈자리를 0으로 채웁니다.
숫자를 2의 제곱으로 곱하는 것과 같음 ( *2, *4, *6, *8...)
2진수는 8개 자리로 00000000~11111111 이며, 8비트 2진수의 표시입니다.
8비트의 2진수는 0과 1로 이루어진 8자리 숫자입니다.
a := 2 // 2를 2진수로 나타내면 00000010
b := a << 1 // 왼쪽으로 1칸 이동: 00000100 (10진수로 4) = 2 * 2 = 4
c := a << 2 // 왼쪽으로 2칸 이동: 00001000 (10진수로 8) = 2 * 2 * 2 = 8
fmt.Println(b) // 출력: 4
fmt.Println(c) // 출력: 8
>> : 오른쪽으로 비트 이동 (2의 제곱 나누기)
비트를 오른쪽으로 밀고, 빈자리를 0으로 채웁니다.(양수일때)
숫자를 2의 제곱으로 나누는 것과 같음. ( /2, /4, /6, /8...)
a := 8 // 8을 2진수로 나타내면 00001000
b := a >> 1 // 오른쪽으로 1칸 이동: 00000100 (10진수로 4) = 8 / 2 = 4
c := a >> 2 // 오른쪽으로 2칸 이동: 00000010 (10진수로 2) = 8 / 2 / 2 = 2
fmt.Println(b) // 출력: 4
fmt.Println(c) // 출력: 2
복합 할당연산자
= : 값을 대입하는 것
+= : 값을 더해서 대입하는 것
-= : 값을 빼서 대입하는 것
*= : 값을 곱해서 대입하는 것
/= : 값을 나눠서 대입하는 것
%= 값을 나눈 나머지를 대입하는 것
포인터연산자: 포인터와 관련된 연산자 입니다.
& : 변수의 메모리 주소를 할당(가져오기)
* : 메모리 주소의 값을 가져오기(가리키는 주소에 실제 값 사용)
- 포인터에 더하고,빼는 기능이 없습니다.(안정성 강화 및 코드 가독성을 위하여- 기능 없슴)
- 만일, 포인터에 더하고, 빼는 기능이 필요하다면(슬라이스, 정수인덱스로 대체할수 있슴)