가치 평등에 대한 연쇄 비교의 대안
세 가지 값의 동등성을 비교할 때 if a == b == c를 사용하면 다음이 됩니다. 유형 불일치로 인한 컴파일 오류. a == b && a == c가 유효한 대안인 경우에는 번거로워 보일 수 있습니다. 이 기사에서는 세 값의 동등성을 우아하게 확인하는 여러 창의적인 방법을 살펴봅니다.
옵션 1: 집합으로 매핑
세 값을 키로 사용하여 맵을 생성합니다. , 맵의 길이가 1인지 확인하여 모든 값이 동일한지 확인할 수 있습니다. 이 접근 방식은 유연하며 3개 이상의 값을 수용할 수 있습니다.
<code class="go">if len(map[interface{}]int{a: 0, b: 0, c: 0}) == 1 { fmt.Println("Map set: all 3 are equal") }</code>
옵션 2: 배열
Go의 배열은 슬라이스와 달리 비교 가능합니다. 세 값의 해당 요소와 배열을 비교하여 동일한지 확인할 수 있습니다.
<code class="go">if [2]interface{}{a, b} == [2]interface{}{b, c} { fmt.Println("Arrays: all 3 are equal") }</code>
옵션 3: 까다로운 지도
지도의 동작을 활용하여 다음을 수행할 수 있습니다. b == c에 대한 단일 비교를 수행한 다음 세 값의 전체 동일성에 대한 프록시로 b의 결과 값에 액세스합니다.
<code class="go">if map[interface{}]bool{a: b == c}[b] { fmt.Println("Tricky map: all 3 are equal") }</code>
옵션 4: 익명 구조체
Go의 구조체 값도 비슷합니다. 두 개의 필드가 있는 익명 구조체를 생성하고 세 개의 값이 포함된 구조체를 비교하고 동일한지 확인할 수 있습니다.
<code class="go">if struct{ a, b interface{} }{a, b} == struct{ a, b interface{} }{b, c} { fmt.Println("Anon structs: all 3 are equal") }</code>
옵션 5: 도우미 함수
우리는 임의 개수의 값을 시드 값과 반복적으로 비교하여 값의 동일성을 확인하는 도우미 함수를 정의할 수 있습니다.
<code class="go">func AllEquals(v ...interface{}) bool { if len(v) > 1 { a := v[0] for _, s := range v { if a != s { return false } } } return true }</code>
위 내용은 Go에서 세 가지 값의 동등성을 우아하게 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!