> 백엔드 개발 > Golang > Go 인터페이스 메서드에서 유형 매개변수를 어떻게 사용할 수 있나요?

Go 인터페이스 메서드에서 유형 매개변수를 어떻게 사용할 수 있나요?

Patricia Arquette
풀어 주다: 2024-11-29 08:43:10
원래의
1009명이 탐색했습니다.

How Can I Use Type Parameters in Go Interface Methods?

인터페이스 메서드에서 유형 매개변수 사용

Go에서 일반 데이터 구조를 구현하려고 할 때 반복자 인터페이스를 정의할 때 오류가 발생했습니다. 유형 매개변수를 취하는 메소드를 사용합니다. 이 문서에서는 문제를 다루고 솔루션을 제공합니다.

인터페이스 정의 오류

초기 코드는 함수 유형 매개변수를 사용하는 메서드로 인터페이스를 정의합니다. 오류: "함수 유형은 유형 매개변수를 가질 수 없습니다." 마찬가지로 유형 매개변수를 메소드로 이동하면 "메소드는 유형 매개변수를 가질 수 없습니다."라는 오류가 발생했습니다.

해결책: 일반 인터페이스 정의

오류에서 제안한 대로 , Methoden은 전용 유형 매개변수를 가질 수 없습니다. 대신, 인터페이스 유형 자체에 유형 매개변수를 지정하는 것이 해결책입니다. 이를 통해 인터페이스 본문 내의 메소드에서 유형 매개변수를 사용할 수 있습니다.

수정된 코드:

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

인터페이스 유형에 정의된 유형 매개변수를 사용하여 이제 다음에서 사용할 수 있습니다. 예상대로의 방법:

type MyIterator[T any] struct {
    // implementation of the iterator
}

func (i *MyIterator[T]) ForEachRemaining(action func(T) error) error {
    // implementation of the ForEachRemaining method using T
    return nil
}
로그인 후 복사

예 사용법

다음 예에서는 일반 반복기 인터페이스의 사용법을 보여줍니다.

package main

import (
    "fmt"
    "collection"
)

type MyIterator[T any] struct {
    // implementation of the iterator
}

func (i *MyIterator[T]) ForEachRemaining(action func(T) error) error {
    // implementation of the ForEachRemaining method using T
    return nil
}

func main() {
    myIterator := &MyIterator[int]{}
    _ = myIterator.ForEachRemaining(func(num int) error {
        fmt.Println(num)
        return nil
    })
}
로그인 후 복사

이 코드는 일반 반복기인 MyIterator를 정의하고 이를 사용하여 정수 조각을 반복합니다. , 각 값을 인쇄합니다.

위 내용은 Go 인터페이스 메서드에서 유형 매개변수를 어떻게 사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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