일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 키보드
- go언어
- nil
- Go
- 벤치마크
- magicsculpt
- Golang
- Griffiths
- Go 언어
- md600alpha
- 리플렉션
- driverless
- 터미널
- 체리적축저소음
- mf642cdw
- Reflection
- 이맥스
- 건프라
- 프라파손
- emacs
- 엘리스배열
- 바로코
- mistel md600 alpha
- 스플릿키보드
- 고양이책
- 패널라인
- mopria
- 음각몰드
- 다이어트
- 양자역학
- Today
- Total
Meandering Trajectory
if 문의 조건절 본문
C나 C++ 같은 언어에서는 다음과 같이 조건절에 변수에 값을 할당(assignment)하는 문법을 사용하는 것이 가능하다.
if (x = 10) {
...
}
이것이 가능한 이유는 이들 언어에서 할당은 표현식(expression)이고 0이 아닌 임의의 값이 참으로 간주되기 때문이다. 1
이런 특성 때문에 종종 프로그래머들은 등호(==)를 넣어야 할 자리에 할당 연산자(=)를 넣는 실수를 한다. 이런 실수를 할 경우 조건이 무조건 참이 되는데다가 변수의 값마저 변경되기 때문에 심각한 오류가 발생할 수 있다. 따라서 이런 실수를 방지하기 위해 많은 프로그래머가 if 문의 조건을 다음과 같이 쓰도록 조언한다.
if (10 == x) {
...
}
상수값과 변수의 위치를 바꾼 것이다. 이렇게 쓰면 등호를 할당 연산자로 잘못 썼다고 해도 컴파일할 때 오류가 발생하므로 바로 문제를 찾을 수 있다.
if (10 = x) { /* 컴파일 에러! */
...
}
상수에 값을 할당하는 것은 불가능하기 때문이다. 상수와 변수의 위치가 바뀐 모양이 보기에는 이상하지만 치명적인 버그를 방지할 수 있다는 점에서 좋은 습관이라고 할 수 있다.
반면 Go에서는 이런 실수 자체가 불가능하다. 조건절에 반드시 결과가 불리언(bool) 타입인 표현식이 와야 하기 때문이다. 다음과 같은 코드를 컴파일하면
if x = 10 {
...
}
이런 에러가 발생한다.
syntax error: x = 10 used as value
Go의 경우 할당문은 결과값을 갖지 않는다. 설령 값을 갖더라도 if 문의 조건에는 불리언 표현식만 허용되므로 어느 쪽으로든 문법에 위배된다.
그러니까 Go에서는 조건절에 굳이 상수와 변수의 위치를 바꿔 쓸 필요가 없다. 물론 상수가 앞에 오는게 미적으로 더 보기 좋다고 생각하는 사람도 있겠지만... ^^;;
- 표현식은 값을 갖고 문장(statement)은 값을 갖지 않는다. [본문으로]
'컴퓨터 > GoLang' 카테고리의 다른 글
panic과 recover (0) | 2019.02.03 |
---|---|
인터페이스 타입과 nil (0) | 2018.02.10 |
Go가 내 에러를 먹었어염! ㅠ.ㅠ (0) | 2017.12.02 |
Go 코드에서의 에러 처리 (0) | 2017.11.18 |
new와 make (0) | 2017.11.12 |