> 백엔드 개발 > Golang > Go 인터페이스 메소드에서 제네릭을 올바르게 구현하는 방법은 무엇입니까?

Go 인터페이스 메소드에서 제네릭을 올바르게 구현하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-06 17:59:11
원래의
466명이 탐색했습니다.

How to Correctly Implement Generics in Go Interface Methods?

인터페이스 메서드에서 제네릭 구현

Go의 최근 제네릭 도입으로 제네릭 데이터 구조와 알고리즘을 생성할 수 있는 새로운 가능성이 열렸습니다. 일반적인 사용 사례 중 하나는 일반 반복기 인터페이스를 정의하는 것입니다. 그러나 이러한 인터페이스를 정의하면 오류가 발생할 수 있습니다.

오류: 함수 유형에 유형 매개변수를 가질 수 없음

일반 메서드 ForEachRemaining을 사용하여 반복자 인터페이스를 정의하려고 하면 다음 오류가 발생할 수 있습니다.

function type cannot have type parameters
로그인 후 복사

이 오류는 Go의 메소드가 자체 유형을 가질 수 없기 때문에 발생합니다. 매개변수.

오류: 메소드는 유형 매개변수를 가질 수 없습니다

또는 유형 매개변수를 메소드 시그니처로 이동하려고 시도할 수 있지만 이로 인해 다른 오류가 발생합니다.

methods cannot have type parameters
로그인 후 복사

해결책: 유형이 있는 일반 인터페이스 매개변수

이 문제를 해결하려면 인터페이스 자체에 유형 매개변수를 지정해야 합니다. 업데이트된 코드 예는 다음과 같습니다.

type Iterator[T any] interface {
    ForEachRemaining(action func(T) error) error
    // other methods
}
로그인 후 복사

이 구문은 Iterator 인터페이스가 T 유형에 대해 일반적이며 인터페이스 내의 모든 메소드가 T를 유형 매개변수로 사용할 수 있음을 지정합니다.

사용 예

수정된 내용을 보여주는 예는 다음과 같습니다. code:

import "fmt"

type Iterator[T any] interface {
    ForEachRemaining(action func(T) error) error
}

func main() {
    fmt.Println("This program compiles successfully")
}
로그인 후 복사

유형 매개변수로 인터페이스를 선언하면 인터페이스 메소드에서 제네릭을 효과적으로 활용할 수 있습니다.

위 내용은 Go 인터페이스 메소드에서 제네릭을 올바르게 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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