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

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

WBOY
WBOY앞으로
2024-02-06 08:15:04582검색

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으로 문의하시기 바랍니다. 삭제