Go

GO - Operators (고랭 연산자)

1,865
목차
  1. 연산자 정의
  2. 산수연산자
  3. 할당연산자
  4. 비교연산자
  5. 논리연산자
  6. 비트연산자

 

연산자 정의

 

변수와 값에 대해서 연산 수행.

 


[예제1] - (값 + 값)

 

package main

import ("fmt")

 

func main() {

  var a = 3 + 4

  fmt.Println(a) // 7

}

 


[예제2] - (변수 + 값), (변수 + 변수)

 

package main

import ("fmt")

func main() {


var (

  a = 1 + 2 // 3

  b = a + 3 // 6

  c = b + b // 12

 )


  fmt.Println(c) // 12

}

 

 

산수연산자

 

일반적 수학 연산 수행.

 


[종류]

 

+  -  더하기  (예) x + y

-  -  빼기 (예) x - y

*  -  곱하기  (예) x * y

/  -  나누기  (예) x / y

%  -  나머지  (예) x % y

++  -  1씩증가 (예) x++

--  -  1씩감소  (예) x--

 


[예제]

 

package main

import ("fmt")

func main() {


  a:= 7

  b:= 3


  fmt.Println(a+b) // 7

  fmt.Println(a-b) // 4

  fmt.Println(a*b) // 21

  fmt.Println(a/b) // 2

  fmt.Println(a%b) // 1

  a++

  fmt.Println(a) // 8

  b--

  fmt.Println(b) // 2 

}

 

PS. 정수/정수 나눗셈 경우, 정수형(즉, 몫) 결과값 반환.

 

할당연산자

 

변수에 값을 할당하는데 사용.

 


[종류]

 

사칙연산 후 할당

=   -  그냥 할당  (예)  x = 3  (즉,  x = 3)

+=  -  더하기 후 할당  (예)  x += 3  (즉,  x = x + 3)

-=  -  빼기 후 할당  (예)  x -= 3  (즉,  x = x - 3)

*=  -  곱하기 후 할당  (예)  x *= 3  (즉,  x = x * 3)

/=  -  나누기 후 할당  (예)  x /= 3  (즉,  x = x / 3)

%=  -  나누기 후 나머지 할당  (예)  x %= 3  (즉,  x = x % 3)

 

비트연산 후 할당 

&=  (예)  x &= 3  (즉,  x = x & 3)

|=  (예)  x |= 3  (즉,  x = x | 3)

^=  (예)  x ^= 3  (즉,  x = x ^ 3)

>>=  (예)  x >>= 3  (즉,  x = x >> 3)

<<=  (예)  x <<= 3  (즉,  x = x << 3)

 


[예제1] - 사칙연산 후 할당

 

package main

import ("fmt")

func main() {


  var x = 5

  fmt.Println(x) // 5


  x +=3

  fmt.Println(x) // 8


  x -=3

  fmt.Println(x) // 5


  x *= 3

  fmt.Println(x) // 15

  

  x /= 3

  fmt.Println(x) // 5

  

  x %= 3

  fmt.Println(x) // 2

}

 


[예제2] &= 연산자

각 숫자를 이진수로 변환 후, 각 자리 비교해 둘 다 1이면 1 설정.

 

package main

import ("fmt")


func main() {

  var x = 5

  fmt.Printf("x 이진수: [%b]\n", x)  // x 이진수: [101]

  fmt.Printf("3 이진수: [%3b]\n", 3) // 3 이진수: [ 11]


  x &= 3 // 001

  fmt.Printf("X 이진수: [%3b]\n", x) // X 이진수: [  1]

}

 


[예제3] |= 연산자

각 숫자를 이진수로 변환 후, 각 자리 비교해 하나라도 1이면 1 설정.

 

package main

import ("fmt")


func main() {

  var x = 5


  fmt.Printf("x 이진수: [%b]\n", x)  // x 이진수: [101]

  fmt.Printf("3 이진수: [%3b]\n", 3) // 3 이진수: [ 11]


  x |= 3 // 111

  fmt.Printf("X 이진수: [%3b]\n", x) // X 이진수: [111]  

}

 


[예제4] ^= 연산자

각 숫자를 이진수로 변환 후, 둘 중 하나만 1이면 1 설정.

 

package main

import ("fmt")


func main() {

  var x = 5


  fmt.Printf("x 이진수: [%b]\n", x)  // x 이진수: [101]

  fmt.Printf("3 이진수: [%3b]\n", 3) // 3 이진수: [ 11]


  x ^= 3 // 110

  fmt.Printf("X 이진수: [%3b]\n", x) // X 이진수: [110]  

}

 


[예제5] >>= 연산자

숫자를 이진수로 변환 후, 좌측부터 가장 좌측의 bit 복사본 채우며 우측으로 이동하며 맨 우측 비트 떨구기

 

package main

import ("fmt")


func main() {

  var x = 5

  fmt.Printf("x 이진수: [%b]\n", x)  // [101]


  x >>= 3

  fmt.Printf("x 이진수: [%3b] \n", x) // [  0]

}

 


[예제6] <<= 연산자

숫자를 이진수로 변환 후, 우측부터 0 채우며 좌측으로 이동.

 

package main

import ("fmt")


func main() {

  var x = 5

  fmt.Printf("x 이진수: [%b]\n", x)  // [101]


  x <<= 3

  fmt.Printf("x 이진수: [%3b] \n", x) // [101000]

}

 

 

비교연산자

 

두 값을 비교하는데 사용.

 

  • 반환값은 true(1), false(0) 중 하나 반환.
  • 조건문에서 주로 사용.

 


[종류]

 

==  -  같다  (예)  x == y

!=  -  다르다  (예)  x != y

>  -  더 크다  (예)  x > y

<  -  더 작다  (예)  x < y

>=  - 크거나 같다  (예)  x >= y

<=  - 작거나 같다  (예)  x <= y

 


[예제]

 

package main

import ("fmt")

func main() {


  var x = 4

  var y = 3


  fmt.Println(x==y) // false

  fmt.Println(x!=y) // true

  fmt.Println(x>y) // true

  fmt.Println(x<y) // false

  fmt.Println(x>=y) // true

  fmt.Println(x<=y) // false

}


 

논리연산자

 

변수 또는 값 간의 논리를 결정하는 데 사용.

 


[종류]

 

&&  -  논리 and (즉, 모두 참이면 true 반환)
(예) x < 5 &&  x < 10

||  -  논리 or (즉, 하나라도 참이면 true 반환)
(예)  x < 5 || x < 4


!  -  논리 not (즉, 결과의 역 반환)
(예) !(x < 5 && x < 10)

 


[예제]

 

package main

import ("fmt")

func main() {


  var x = 3

  fmt.Println(x < 3 &&  x < 6) // false

  fmt.Println(x < 3 ||  x < 6) // true

  fmt.Println(!(x < 3 ||  x < 6)) // false  

}

 

 

 

 

비트연산자

 

이진수 숫자 연산에 사용.

 


[종류]

 

&  -  AND (즉, 둘 다 1이면 1 설정) (예) x & y

|  -  OR (즉, 둘 중 하나라도 1이면 1 설정) (예) x | y

^  -  XOR (즉, 둘 중 하나만 1이면 1 설정) (예) x ^ y

<<  -  우측부터 0 채우며 좌측으로 이동 (예) x<<2

>>  -  좌측부터 가장 좌측의 bit 복사본 채우며 우측으로 이동하며 맨 우측 비트 떨구기 (예) x>>2

 

ps. << 및 >> 효과를 정확히 파악하려면, %8b 포맷동사 사용해 출력.


[예제1] - & 연산자

 

package main

import ("fmt")

func main() {

  var x = 5

  var y = 3

  fmt.Printf("x 이진수: [%3b]\n",x) // x 이진수: [101]

  fmt.Printf("y 이진수: [%3b]\n",y) // y 이진수: [ 11]    

  fmt.Printf("x&y : [%3b]\n",x&y) // x&y : [  1]

}

 


[예제2] - | 연산자

 

package main

import ("fmt")

func main() {

  var x = 5

  var y = 3

  fmt.Printf("x 이진수: [%3b]\n",x) // x 이진수: [101]

  fmt.Printf("y 이진수: [%3b]\n",y) // y 이진수: [ 11]    

  fmt.Printf("x&y : [%3b]\n",x|y) // x&y : [111]

}

 


[예제3] - ^ 연산자

 

package main

import ("fmt")

func main() {

  var x = 5

  var y = 3

  fmt.Printf("x 이진수: [%3b]\n",x) // x 이진수: [101]

  fmt.Printf("y 이진수: [%3b]\n",y) // y 이진수: [ 11]    

  fmt.Printf("x&y : [%3b]\n",x^y) // x&y : [110]

}

 


[예제4] - << 연산자

 

package main

import ("fmt")

func main() {

  var x = 5

  fmt.Printf("x = [%3b]\n",x) // x = [101]

  fmt.Printf("x<<2 = [%3b]\n",x<<2) // x<<2 = [10100]

}

 


[예제5] - >> 연산자

 

package main

import ("fmt")

func main() {

  var x = 5

  fmt.Printf("x = [%8b]\n",x) // x = [     101]

  fmt.Printf("x>>2 = [%8b]\n",x>>2) // x>>2 = [       1]

}

 



제목
GO - Home (고랭 입문)
GO - Intro (고랭 소개)
GO - Start (고랭 시작)
GO - Syntax (고랭 구문)
GO - Comments (고랭 주석)
GO - Variables (고랭 변수)
GO - Constants (고랭 상수)
GO - Output (고랭 출력)
GO - Data Types (고랭 데이터타입) - 자료형
GO - Arrays (고랭 배열)
GO - Slices (고랭 슬라이스)
GO - Operators (고랭 연산자)
GO - Conditions (고랭 IF조건문)
GO - switch (고랭 스위치조건문)
GO - For Loops (고랭 FOR반복문)
1/2
목록
 홈  PC버전 로그인 일본어
그누앞단언어
그누뒷단언어
그외코딩언어
그누보드 1
제작의뢰
Q&A
커뮤니티
웹유틸
회원센터
홈짱닷컴 PC버전 로그인