본문 바로가기
Golang

[Golang] 왜 Go에는 ?: 연산자(삼항 연산자)가 없을까?

by gungle 2024. 7. 30.

Go 언어는 깔끔하고 명확한 코드 작성을 지양한다. 이런 철학 때문에 Go에는 다른 언어에서 자주 사용하는 삼항 연산자(?:)가 없다. 이 글에서는 왜 Go에 삼항 연산자가 없는지, 그리고 같은 결과를 얻기 위해 어떤 방법을 사용할 수 있는지 살펴본다.

 

삼항 연산자란 무엇인가?

삼항 연산자는 조건에 따라 값을 선택하는 짧은 방법이다. 예를 들어, C와 같은 언어에서 삼항 연산자는 다음과 같이 사용할 수 있다:

n = (expr) ? trueVal : falseVal;

이 코드는 expr이 참이면 trueVal을, 거짓이면 falseVal을 n에 대입한다. 간단하고 편리하게 조건문을 사용할 수 있는 방법이다.

 

Go에서 삼항 연산자를 대신하는 방법

Go에서는 삼항 연산자를 사용할 수 없지만, 같은 결과를 얻기 위해 if-else 문을 사용할 수 있다. 예를 들어:

if expr {
    n = trueVal
} else {
    n = falseVal
}

이 코드는 삼항 연산자와 동일한 기능을 수행하지만, 더 길고 명확하게 작성된다.

 

왜 Go에는 삼항 연산자가 없을까?

Go 언어의 설계자들은 삼항 연산자가 복잡하고 난해한 표현식을 만드는 데 자주 사용되는 것을 보았다. 삼항 연산자가 있으면 코드가 짧아지지만, 그만큼 가독성이 떨어지고 이해하기 어려운 코드가 될 수 있다. Go 언어는 명확하고 읽기 쉬운 코드를 지향하기 때문에, 삼항 연산자를 배제하고 if-else 문만을 사용하도록 하였다.

삼항 연산자를 사용하면 코드가 짧아질 수 있지만, Go 언어의 철학은 명확하고 명시적인 코드를 작성하는 것이다. 따라서 if-else 문이 더 길더라도, 코드의 명확성을 높이는 데 기여한다.

 

결론

Go 언어에서 삼항 연산자가 없는 이유는 코드의 명확성과 가독성을 높이기 위해서이다. 삼항 연산자 대신 if-else 문을 사용하여 조건문을 작성하면, 더 명확하고 이해하기 쉬운 코드를 작성할 수 있다. 이는 Go 언어가 지향하는 깔끔하고 명확한 코드 작성을 위한 중요한 원칙 중 하나이다.

 

참고

Why does Go not have the ?: operator?

What is the idiomatic Go equivalent of C's ternary operator?