> 백엔드 개발 > Golang > Go Generics에서 공용체 유형 제약 조건과 함께 공유 메서드를 어떻게 사용할 수 있나요?

Go Generics에서 공용체 유형 제약 조건과 함께 공유 메서드를 어떻게 사용할 수 있나요?

Barbara Streisand
풀어 주다: 2024-12-23 12:30:09
원래의
126명이 탐색했습니다.

How Can I Use Shared Methods with Union Type Constraints in Go Generics?

Go의 일반 제약 조건: 공용체 유형에 대한 공유 메서드 사용

Go 제네릭(v1.18)에서는 유형 공용체 제약 조건을 사용하여 다음을 수행할 수 있습니다. 일반 유형 매개변수에 할당할 수 있는 유형 세트를 정의합니다. 그러나 이러한 유형에 공유 메서드를 사용하면 오류가 발생할 수 있습니다.

다음 코드를 고려하세요.

type A struct {}
type B struct {}

type AB interface {
    *A | *B
}

func (a *A) some() bool {
    return true
}

func (b *B) some() bool {
    return false
}

func some[T AB](x T) bool {
    return x.some()   // <- error
}
로그인 후 복사

컴파일러가 공용체 유형 AB에서 some 메서드를 찾을 수 없기 때문에 오류가 발생합니다. . 이 문제를 해결하려면 인터페이스 제약 조건에 메소드를 추가해야 합니다.

type AB interface {
    *A | *B
    some() bool
}

func some[T AB](x T) bool {
    return x.some()   // works
}
로그인 후 복사

이는 일반 유형 T를 *A와 *B를 모두 구현하는 유형으로 제한하고 some 메소드도 정의합니다.

그러나 Go 1.18 릴리스 노트에 명시된 바와 같이 이는 일시적인 제한 사항입니다. Go 1.19에서는 이 제한 사항이 제거되어 컴파일러가 공용체 유형에서 some 메서드를 자동으로 추론할 수 있을 것으로 예상됩니다.

위 내용은 Go Generics에서 공용체 유형 제약 조건과 함께 공유 메서드를 어떻게 사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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