>  기사  >  백엔드 개발  >  Go에서 세 가지 값 사이의 동등성을 효율적으로 확인하는 방법은 무엇입니까?

Go에서 세 가지 값 사이의 동등성을 효율적으로 확인하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-04 01:55:30761검색

How to Efficiently Check Equality Between Three Values in Go?

세 가지 값의 동일성을 확인하는 효율적인 방법

Go에서는 여러 변수의 동일성을 비교하는 것이 어려울 수 있습니다. if a == b == c의 간단한 접근 방식은 컴파일 오류를 초래하지만 우아하고 효율적인 솔루션을 제공하는 몇 가지 대체 방법이 있습니다.

명확하고 간결한 접근 방식

권장 및 세 값이 동일한지 확인하는 가장 간결한 방법은 다음과 같습니다.

<code class="go">if a == b && a == c {
    fmt.Println("All 3 are equal")
}</code>

이 방법은 Go가 두 값을 비교할 때 부울 값을 반환한다는 사실을 활용하여 명확하고 읽기 쉬운 코드를 보장합니다.

대안 실험용

위의 솔루션이 최적이지만 실험을 위해 탐색할 수 있는 다양한 창의적 옵션이 있습니다.

세트로 매핑:

<code class="go">if len(map[interface{}]int{a: 0, b: 0, c: 0}) == 1 {
    fmt.Println("Via a map set: all 3 are equal")
}</code>

이 방법의 기본 개념은 값을 맵에 키로 추가하고, 값이 모두 같을 경우 맵에는 하나의 키만 포함되어 길이가 1이 되는 것입니다.

배열:

<code class="go">if [2]interface{}{a, b} == [2]interface{}{b, c} {
    fmt.Println("Via arrays: all 3 are equal")
}</code>

배열은 본질적으로 비교 가능하므로 ==를 사용하여 세 가지 값을 비교할 수 있습니다. 그러나 이 접근 방식은 특정 개수의 값을 비교하는 데에만 적합합니다.

까다로운 맵:

<code class="go">if map[interface{}]bool{a: b == c}[b] {
    fmt.Println("Via a tricky map: all 3 are equal")
}</code>

이 방법은 맵을 활용하여 다음의 결과를 할당합니다. b == c를 키에 연결한 다음 동일한 키와 연결된 값에 액세스합니다. a == b이면 b == c의 결과가 반환되어 같음을 나타냅니다.

익명 구조체:

<code class="go">if struct{ a, b interface{} }{a, b} == struct{ a, b interface{} }{b, c} {
    fmt.Println("Via anonymous structs: all 3 are equal")
}</code>

중첩 구조체는 비교할 수 있으므로 간결한 구문으로 세 개의 값을 비교합니다.

슬라이스:

<code class="go">if reflect.DeepEqual([]interface{}{a, b}, []interface{}{b, c}) {
    fmt.Println("Via slices: all 3 are equal")
}</code>

슬라이스 자체는 비교할 수 없지만, Reflect.DeepEqual() 함수는 동등성을 결정할 수 있습니다. , 내용을 비교할 수 있습니다.

도우미 함수:

<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.