논리 연산자
논리 연산자
조건이 맞느냐 아니냐로 흐름을 나누는 일, 코드를 짜다 보면 정말 많죠. Go에서는 이렇게 참과 거짓을 다루는 연산자를 따로 마련해 뒀는데, 그게 바로 논리 연산자예요. 어떤 결과를 내는지, 평가가 어떤 순서로 이뤄지는지 하나씩 볼게요.
출처: Go Specification
본문
논리 연산자는 boolean 값에 적용되며, 피연산자와 같은 타입의 결과를 내요. 연산에 참여하는 값이 둘 다 불리언이라면, 결과도 당연히 불리언이라는 뜻이에요.
평가 순서도 잘 기억해 둘 게 있어요. 왼쪽 피연산자를 먼저 평가하고, 조건이 요구할 때에만 오른쪽 피연산자를 평가해요. 필요한 경우에만 이어서 계산한다고 해서 '단락 평가(short-circuit evaluation)'라고 부르는데, Go도 이 규칙을 그대로 따르죠.
구체적인 연산자는 세 가지가 있어요.
&& conditional AND p && q is "if p then q else false"
|| conditional OR p || q is "if p then true else q"
! NOT !p is "not p"
&&는 p가 참일 때만 q를 평가해서 q를 내고, p가 거짓이면 바로 false예요. ||는 반대로 p가 참이면 바로 true, p가 거짓일 때만 q를 평가해서 그 값을 내죠. !는 단항 연산자라서 피연산자가 하나뿐이고, p의 부정(not p)을 돌려줘요.
더 알아보기
- Boolean types — 논리 연산자가 다루는 타입
- Comparison operators — 값을 서로 비교할 때 쓰는 연산자
- Go Language Specification — 전체 문서