> 백엔드 개발 > Golang > Golang의 추가 제한 유형 매개변수(Contains 메소드를 사용하여 일반 목록 구현)

Golang의 추가 제한 유형 매개변수(Contains 메소드를 사용하여 일반 목록 구현)

WBOY
풀어 주다: 2024-02-06 08:15:04
앞으로
584명이 탐색했습니다.

Golang의 추가 제한 유형 매개변수(Contains 메소드를 사용하여 일반 목록 구현)

질문 내용

다음과 같은 몇 가지 유용한 메서드가 포함된 일반적인 list 유형을 작성한다고 가정해 보겠습니다.

으아악

그러나 목록t의 요소 유형을 추가로 제한해야 할 수 있는 다른 유용한 방법이 있습니다. 예를 들어, 다음 t。例如,我们无法在此 list 类型上实现 contains 유형에는 contains 메소드를 구현할 수 없습니다:

으아악

list 为,我们只能实现 contains as를 선언하면 contains

만 구현할 수 있습니다. 으아악

하지만 이로 인해 비교할 수 없는 유형을 만드는 것이 불가능해집니다. list .

두 가지 장점을 모두 누릴 수 있는 방법이 있나요? 즉, 비교할 수 없는 유형에 사용할 수 있는 tlist[t] ,但在 t 具有可比性的情况下允许它有一个 contains 방법이 있나요?

내가 생각한 것:

  • 다른 유형을 사용하세요(예: 비교 가능 목록/uncomparablelist/listlist/comparablelist 또는
  • /비교 가능 목록)
  • 包含 메서드 대신
  • 함수를 만들어 보세요

하지만 난 그 중 어떤 것도 별로 좋아하지 않아요.

정답

go에는 전문 분야가 없으므로 정확히 이렇게 작동하도록 만들 수는 없을 것 같습니다(제네릭 전문가는 아니지만).

이 문제를 해결하는 합리적인 방법은 명시적 비교기를 전달하는 것입니다.

으아악

그럼

으아악

유사한 유형의 경우 기본값을 제공할 수 있습니다.

으아악

그래서 위의 내용은

이 됩니다. 으아악 list 类型中嵌入一个比较器,并为其指定默认值 func(a, b t) bool { return false }또한

유형에 비교기를 포함하고 기본값 func(a, b t) bool { return false }을 제공하고 생성자에 전달할 수 있는 사용자 정의 비교기를 노출할 수도 있습니다. 그러나 이것은 당신에게 너무 모호할 수 있습니다. 🎜

위 내용은 Golang의 추가 제한 유형 매개변수(Contains 메소드를 사용하여 일반 목록 구현)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿