>백엔드 개발 >Golang >Go Generics에서 순서 연산자(<, >, <=, >=)를 어떻게 안전하게 사용할 수 있나요?

Go Generics에서 순서 연산자(<, >, <=, >=)를 어떻게 안전하게 사용할 수 있나요?

DDD
DDD원래의
2024-12-11 13:27:18242검색

How Can I Safely Use Order Operators (<, >, <=, >=) Go Generics와 함께 하시나요?
, =) Go Generics를 사용하시겠습니까? " />

Go Generics: 비교 가능한 제약 조건이 있는 순서 연산자

Go 1.18에서 Generics는 유형 호환성을 강화하기 위해 맞춤형 제약 조건을 허용합니다. 그러나 '>' 연산자에 '비교 가능' 제약 조건을 사용하면 오류가 발생할 수 있습니다.

'비교 가능' 제약 조건

'비교 가능' 제약 조건은 해당 유형이 동등 연산자('==' 및 '!= '). 이는 비교 가능한 필드가 있는 배열 및 구조체를 포함하여 맵 키로 적합한 유형을 포함합니다. 특히 인터페이스는 런타임 패닉을 일으킬 수 있으므로 제외됩니다. 비교.

순서 대 비교 가능

Go 사양에서는 "비교 연산자"라는 용어 아래 순서 연산자를 언급하지만 동등성('==' 및 '!=')과 순서를 구별합니다. 연산자('<', '>', '<=', '>=') 순서는 다음과 같은 유형으로 제한됩니다. 'ordered.'

Go 버전 및 솔루션

Go 1.21

  • 표준 라이브러리에서 'cmp.Ordered'를 도입하세요.

1.18로 이동 1.20

  • 실험적 'golang.org/x/exp' 패키지의 'constraints.Ordered'를 활용합니다. 이 제약 조건은 순서 연산자를 지원하며 정수, 부동 소수점 및 문자열.

예:

import "golang.org/x/exp/constraints"

func getBiggerNumber[T constraints.Ordered](t1, t2 T) T {
    if t1 > t2 {
        return t1
    }
    return t2
}

적절한 제약 조건을 선택하면 일반 함수에서 유형 호환성과 올바른 비교 동작을 보장할 수 있습니다.

위 내용은 Go Generics에서 순서 연산자(<, >, <=, >=)를 어떻게 안전하게 사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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