[Go 언어] 18. 자신의 값을 1 증가하거나 감소시키는 증감 연산자

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

이번에는 자신의 값을 1 증가하거나 감소시키는 증감 연산자를 알아보아요.

증감 연산자는 변수의 값을 1 증가하거나 1 감소할 때 사용하는 단항 연산자예요. C언어에서는 증감 연산자의 결과를 다른 변수에 대입할 수 있지만 Go 언어에서는 증감 연산자의 결과를 사용할 수 없어요. 또한 C언어에서는 증감 연산자를 피연산자 앞에 오는 전위 표현을 사용할 수 있었지만 Go언어에서는 항상 피연산자 뒤에 와야 합니다.

C언어에서 ++i 표현이나 i++ 표현은 모두 i를 1 증가하는 표현이예요. 하지만 증감 연산자가 피연산자의 앞에 오는 전위 표현과 뒤에 오는 후위 표현에 따라 연산의 결과는 차이가 있어요. 이는 개발자에게 혼돈을 줄 때가 많이 있었어요.

Go 언어에서는 증감 연산자는 자기 자신을 1 증가하거나 감소할 때 사용하며 연산의 결과를 사용하지 못하게 함으로써 개발자의 혼돈을 줄이고 있어요.

새 프로젝트를 생성하여 살펴보기로 해요.

[그림 1] LiteIDE에서 새 프로젝트 생성 및 소스 파일 추가
// Example 자신의 값을 1 증가하거나 감소시키는 증감 연산자
package main
 
import "fmt"
 
func main() {
    var i int = 2
   
    fmt.Println("i:", i)
 
    i++ //i는 1 증가하여 3으로 변함
    fmt.Println("i:", i)
   
    i-- //i는 1 감소하여 2로 변함
    fmt.Println("i:", i)
}

테스트를 위해 정수 형식 변수 i를 선언하고 2로 초기화하세요.

    var i int = 2   
    fmt.Println("i:", i)

증가 연산자를 사용하면 자기 자신을 1 증가하여 3으로 변해요.

  • ++ 연산자(증가 연산자)
    i++ //i는 1 증가하여 3으로 변함
    fmt.Println("i:", i)

감소 연산자를 사용하면 자기 자신을 1 감소하여 2로 변해요.

  • — 연산자(감소 연산자
    i-- //i는 1 감소하여 2로 변함
    fmt.Println("i:", i)
[그림 2] 증감 연산자 사용 예제 실행 화면

 다음처럼 증감 연산자를 피연산자 앞에 표현하면 컴파일 에러가 발생해요.

  • 전위 표현으로 증감 연산자를 사용하면 컴파일 에러
    ++i
[그림 3] 증감 연산자를 전위로 표현하여 컴파일 에러가 발생

[그림 3] 증감 연산자를 전위로 표현하여 컴파일 에러가 발생

다음처럼 증감 연산한 결과를 다른 변수에 대입하는 표현도 컴파일 에러를 발생합니다.

  • 증감 연산 결과를 다른 변수에 대입하면 컴파일 에러
    re = i++
[그림 4] 증감 연산 결과를 다른 변수에 대입하여 컴파일 에러가 발생

 이처럼 Go 언어에서는 C언어나 C++언어에서 표현이 가능하지만 개발자가 혼돈할 수 있는 표현을 컴파일 에러로 처리하여 모호함을 없앤 표현들이 많이 있어요.