Go의 삼항 연산자: 왜 없을까? 대체 방법들
James Reed
Infrastructure Engineer · Leapcell

Key Takeaways
- Go는 코드 명확성과 간결성을 유지하기 위해 삼항 연산자를 지원하지 않습니다.
if-else
문은 Go에서 조건부 할당을 처리하는 관용적인 방법입니다.- 제네릭은 삼항 연산자 동작을 간결하게 모방하는 헬퍼 함수를 사용할 수 있게 합니다.
많은 프로그래밍 언어에서 삼항 연산자(? :
)는 조건부 할당을 수행하는 간결한 방법을 제공합니다. 그러나 Go(Golang)는 코드 명확성과 간결성을 장려하기 위해 의도적으로 이 연산자를 생략합니다. 이 기사에서는 Go에서 유사한 기능을 달성하기 위한 관용적인 접근 방식을 살펴봅니다.
다른 언어의 삼항 연산자
C 또는 JavaScript와 같은 언어에서 삼항 연산자를 사용하면 다음과 같이 간결한 조건식을 사용할 수 있습니다.
int result = (condition) ? value_if_true : value_if_false;
이 한 줄은 condition
이 참이면 value_if_true
를 result
에 할당하고, 그렇지 않으면 value_if_false
를 할당합니다.
Go의 접근 방식: If-Else 문
Go는 가독성과 명시성을 강조합니다. 삼항 연산자 대신 Go는 간단한 if-else
문을 활용합니다.
package main import "fmt" func main() { condition := true var result string if condition { result = "It's true!" } else { result = "It's false!" } fmt.Println(result) }
여기서 result
는 condition
평가에 따라 할당됩니다. 삼항 연산자보다 더 자세하지만 이 접근 방식은 코드 명확성을 향상시킵니다.
헬퍼 함수 사용
인라인 조건부 평가가 필요한 시나리오의 경우 헬퍼 함수를 정의하는 것이 유용할 수 있습니다. Go 1.18에서 제네릭이 도입되면서 이러한 함수는 더욱 다재다능해졌습니다.
package main import "fmt" // Ternary 함수는 삼항 연산자를 모방합니다. func Ternary[T any](condition bool, trueVal, falseVal T) T { if condition { return trueVal } return falseVal } func main() { condition := false result := Ternary(condition, "Yes", "No") fmt.Println(result) // 출력: No }
Ternary
함수는 condition
을 평가하고 그에 따라 trueVal
또는 falseVal
을 반환합니다. 이 방법은 가독성을 유지하면서 간결한 대안을 제공합니다.
결론
Go에는 내장된 삼항 연산자가 없지만 설계 철학은 if-else
문 또는 헬퍼 함수를 통해 명시적이고 명확한 코드를 장려합니다. 이러한 관행은 Go 코드가 유지 관리 가능하고 이해하기 쉽도록 보장합니다.
FAQs
Go는 간결한 구문보다 가독성과 명시성을 우선시합니다.
제네릭이 있는 if-else
문 또는 헬퍼 함수를 사용합니다.
중대한 문제는 없지만 if-else
문이 가장 직접적인 접근 방식입니다.
Go 프로젝트 호스팅을 위한 최고의 선택, Leapcell입니다.
Leapcell은 웹 호스팅, 비동기 작업 및 Redis를 위한 차세대 서버리스 플랫폼입니다.
다국어 지원
- Node.js, Python, Go 또는 Rust로 개발하세요.
무제한 프로젝트를 무료로 배포하세요
- 사용량에 대해서만 비용을 지불하세요. 요청이나 요금이 없습니다.
최고의 비용 효율성
- 유휴 요금 없이 사용한 만큼만 지불하세요.
- 예: $25는 평균 응답 시간 60ms에서 694만 건의 요청을 지원합니다.
간소화된 개발자 경험
- 간편한 설정을 위한 직관적인 UI.
- 완전 자동화된 CI/CD 파이프라인 및 GitOps 통합.
- 실행 가능한 통찰력을 위한 실시간 지표 및 로깅.
손쉬운 확장성 및 고성능
- 고도의 동시성을 쉽게 처리할 수 있도록 자동 확장됩니다.
- 운영 오버헤드가 전혀 없습니다. 빌드에만 집중하세요.
설명서에서 자세히 알아보세요!
X에서 팔로우하세요: @LeapcellHQ