연산자 알아보기

이재홍 http://www.pyrasis.com 2014.12.17 ~ 2015.02.07

연산자 우선순위

연산자 우선순위는 수학시간에 배운 내용과 비슷합니다. 예를들면 2 + 3 * 2에서 3 * 2를 먼저 계산하고 2 + 6을 계산합니다. 이 부분도 필요할 때 언제든 찾아보기 바랍니다.

Go 언어에서는 기본적으로 여러 연산자들이 있을 때 왼쪽에서 오른쪽으로 계산합니다. 단, 연산자들은 다음과 같이 우선순위가 있으며 숫자가 높을 수록 먼저 계산합니다.

우선순위 연산자
5 * / % << >> & &^
4 + - | ^|
3 == != < <= > >=
2 &&
1 ||

표 13-2 연산자 우선순위

다음과 같이 8 + 10 / 2를 계산해봅니다.

a := 8 + 10 / 2
fmt.Println(a) // 13

연산자 우선순위에 의해 앞에 있는 덧셈(+)보다 뒤에 있는 나눗셈(/)이 먼저 실행되서 5가 나온 뒤에 8과 더해서 13이 됩니다.

8과 10을 먼저 더하려면 다음과 같이 ( ) (괄호)를 사용합니다.

a := (8 + 10) / 2
fmt.Println(a) // 9

8과 10을 먼저 더해서 18이 나온 뒤에 2를 나누어 9가 됩니다. 즉 괄호를 사용하면 계산 순서를 바꿀 수 있습니다.

gofmt와 연산자
gofmt 도구로 소스 파일을 정렬했을 때 괄호가 없으면 연산자 우선순위가 높은 쪽의 공백을 삭제하여 서로 붙여줍니다.

곱셈(*)과 덧셈(+)이 괄호 없이 쭉 나열되어 있다면

a := 3 * 5 + 2 * 7

gofmt 도구로 정렬했을 때 다음과 같이 우선순위가 높은 곱셈 연산은 서로 붙여줍니다.

a := 3*5 + 2*7

하지만 우선순위가 같은 연산자만 있다면 gofmt는 서로 붙이지 않고 모두 공백으로 띄워줍니다.

a := 3 - 5 + 2 - 7

저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

01 June 2015