Go에 3진법이 없는 이유는 무엇인가요?
Go와 Ternary에 대한 논의는 새로운 것이 아니며 주제에 대한 많은 문제가 있습니다. 당신이 탐구할 수 있도록 그녀의 출처를 남겨둘 것입니다. 양쪽에서 가장 중요하다고 생각하는 요점을 요약하겠습니다. 그리고 개인적인 결론을 내립니다.
이익
1) 사용 라인 코드를 대폭 줄입니다.
var n T
if expr {
n = trueVal
} else {
n = falseVal
}
var n = expr ? trueVal : falseVal
2) 문제가 sumbols인 경우
?
, :
. =
, 파이썬에서도 접근할 수 없는 접근 방식은 매우 흥미로울 수 있습니다.x := "yes" if true else "no"
3) Go의 예제 기반인 C 및 C++와 같은 언어에는 삼항이 있습니다.
4) 값이 할당되지 않은 경우 기본 값을 필요로 하는 변수(예: 서비스 포트).
단점
1) 검증할 표현식이 둘 이상인 경우 삼항 연산을 읽기 어렵고 그 완성도를 판단할 수 없게 됩니다.
var b1, b2, b3 bool
...
var s = b1 || b2 ? b2 && b3 ? b1 && b3 : "s1" : "s2" : "s3": "s4"
2) IF, ELSE 및 Switch와 같은 연산으로 대체할 수 있습니다.
3) 구문과 관련하여 명확성과 단순성이라는 Go의 목표에서 벗어납니다.
결론
3진법은 1.20버전까지는 안나올거고(현재 1.19임) Go 2버전에 나올지 논의가 되지만 좀처럼 오지 않는 현실은 내가 보는것과 과반수로 나뉘어 있음에도 불구하고 전달한다. 더 많은 코드 줄이 필요하더라도 구문의 단순성을 유지해야 하는 방어.
의사 소통의 가장 큰 두려움은 더 복잡한 코드를 만드는 것입니다. 저는 개인적으로 개발자와 팀이 가장 좋은 작성 방법을 선택하는 자율성을 선호합니다. 한 줄만 사용하는 것이 더 합리적이기 때문에 한 가지 옵션이 더 좋을 것입니다. 적어도 3을 사용하는 것보다.
정말 필요한 경우 Go에서 삼항을 생성하거나 다른 언어에 있는 패키지와 매우 가깝게 두는 패키지가 있습니다(예: ternary). 논리적으로 Github 주변에 다른 패키지가 흩어져 있어야 합니다.
출처
Reference
이 문제에 관하여(Go에 3진법이 없는 이유는 무엇인가요?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/allisonpiovani/why-doesnt-go-have-ternary-4anl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)