본문 바로가기
CS

[Go] Go의 연산자

by cuda 2022. 10. 4.

연산자(Operator)

산술 연산자

산술 연산자는 숫자 연산을 하는 연산자이다.
사칙 연산, 비트 연산, 시프트 연산이 이에 속한다.

구분 연산자 연산 피연산자 타입
사칙 연산 + 덧셈 정수, 실수, 복소수, 문자열
사칙 연산 - 뻴셈 정수, 실수, 복소수
사칙 연산 * 곱셈 정수, 실수, 복소수
사칙 연산 / 나눗셈 정수, 실수, 복소수
사칙 연산 % 나머지 정수
비트 연산 & AND 비트 연산 정수
비트 연산 | OR 비트 연산 정수
비트 연산 ^ XOR 비트 연산 정수
비트 연산 &^ 비트 클리어 정수
시프트 연산 << 왼쪽 시프트 정수 << 양의 정수
시프트 연산 >> 오른쪽 시프트 정수 >> 양의 정수

논리 연산자

연산자 논리 연산 내용
&& AND 양변이 모두 true이면 true 반환
|| OR 양변 중 하나라도 true이면 true 반환
! NOT true이면 false를 반한하고 false이면 true 반환

대입 연산자

대입 연산자 =는 우변의 값을 좌변(메모리 공간)에 복사한다.
이 때, 좌변은 반드시 저장할 공간이 있는 변수가 와야한다.

package main

import "fmt"

func main() {
    var a int
    a = 10 //대입 연산자

    fmt.Println(a)
}

또한, 대입 연산자는 결과값을 반환하지 않는다 따라서 아래와 같은 구문은 오류를 발생시킨다.

var a int
var b int
a = b = 10 // b = 10은 결과값을 반환하지 않기 때문에 a에 대입할 수 없다.

복수 대입 연산자

Go에서는 여러개의 값을 한번에 대입할 수 있다.

var a int
var b int

a, b = 3, 4 // 여러개의 값 한번에 대입

복합 대입 연산자

타 언어와 마찬가지로, Go에서는 복합 대입 연산자를 지원한다.
Ex) +=, -=, *=, /=, %=
복합 대입 연산자도 값을 반환하지 않는다. 따라서, 아래와 같은 구문은 오류를 발생시킨다.

var a int
var b int
a = b += 2

증감 연산자

변수의 값을 1 증가시키거나, 1 감소하는 구문으로, ++와 -- 두 종류를 제공한다.

  • ++ : 정수 타입 변수 뒤에 붙여쓰며, 해당 변수값을 1 증가시킨다.
  • -- : 정수 타입 변수 뒤에 붙여쓰며, 해당 변수값을 1 감소시킨다.

그 외 연산자

연산자 설명
[] 배열의 요소에 접근할 때 사용
. 구조체나 패키지 요소에 접근할 때 사용됨
& 변수의 메모리 주솟값을 반환
* 포인터 변수가 가리키는 메모리 주소에 접근함
... 슬라이스 요소들에 접근하거나 가변 인수를 만들 때 사용됨
: 배열의 일부분을 집어올 때 사용됨
<- 채널에서 값을 빼거나 넣을 때 사용됨

Tucker의 Go 언어 프로그래밍 - 공봉식 지음

댓글