20241226

Go언어의 연산자 관련- Golang

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


복합 할당연산자

= : 값을 대입하는 것

+=  : 값을 더해서 대입하는 것

-= : 값을 빼서 대입하는 것

*= : 값을 곱해서 대입하는 것

/= : 값을 나눠서 대입하는 것

%= 값을 나눈 나머지를 대입하는 것


포인터연산자: 포인터와 관련된 연산자 입니다.

& : 변수의 메모리 주소를 할당(가져오기)

* : 메모리 주소의 값을 가져오기(가리키는 주소에 실제 값 사용)

- 포인터에 더하고,빼는 기능이 없습니다.(안정성 강화 및 코드 가독성을 위하여- 기능 없슴)

- 만일, 포인터에 더하고, 빼는 기능이 필요하다면(슬라이스, 정수인덱스로 대체할수 있슴)