Go에서 일반 메소드 매개변수를 사용하여 ID 속성이 있는 모든 유형에서 Count 함수가 작동하도록 하려면 어떻게 해야 합니까?

Barbara Streisand
풀어 주다: 2024-11-01 15:01:02
원래의
932명이 탐색했습니다.

How can I use generic method parameters in Go to make a Count function work with any type that has an ID property?

Go에서 일반 메서드 매개변수 사용

Go 제네릭은 다양한 데이터 유형을 사용할 수 있는 메서드와 데이터 구조를 정의하는 유연성을 제공합니다. 이 특정 인스턴스에서 당면한 작업은 ID 속성을 소유한 모든 유형을 허용하도록 Count 함수를 수정하는 것입니다.

인터페이스 기반 솔루션

인터페이스 기반 솔루션을 사용하면 구체적인 유형과 동작을 분리할 수 있습니다. 인터페이스를 활용하면 다양한 데이터 유형 간의 공통 기능을 추상화할 수 있습니다.

<code class="go">type IDed interface {
  GetID() int
}</code>
로그인 후 복사

이 인터페이스는 정수를 반환하는 GetID라는 단일 메서드를 정의합니다. 다양한 유형에서 이 인터페이스를 구현할 수 있으므로 Count 함수가 인터페이스를 충족하는 모든 유형에서 작동할 수 있습니다.

ImplStruct 구현

이를 구현하기 위해 두 번째 유형을 정의합니다. , IDed 인터페이스를 포함하는 ImplStruct. 이 유형에는 GetID 메서드와 추가 이름 필드가 포함됩니다.

<code class="go">type ImplStruct struct {
  IDed
  Name string
}</code>
로그인 후 복사

수정된 카운트 함수

이제 Count 함수는 IDed 인터페이스를 구현하는 모든 유형을 허용할 수 있습니다. 이는 포유류 및 인간 유형 모두에서 작동할 수 있음을 의미합니다.

<code class="go">func Count(data []IDed) []string {
  ids := make([]string, len(data))
  for i, m := range data {
    ids[i] = strconv.Itoa(m.GetID())
  }
  return ids
}</code>
로그인 후 복사

사용

수정된 Count 함수와 ImplStruct 유형을 사용하면 이제 ID를 계산할 수 있습니다. 포유류 및 인간 유형 모두에 적용됩니다.

<code class="go">mammals := []ImplStruct{
  ImplStruct{ID: 1, Name: "Carnivorious"},
  ImplStruct{ID: 2, Name: "Ominivorious"},
}

humans := []ImplStruct{
  ImplStruct{ID: 1, Name: "Peter"},
  ImplStruct{ID: 2, Name: "Paul"},
}

fmt.Println(Count(mammals))
fmt.Println(Count(humans))</code>
로그인 후 복사

결론

이 개선된 코드에서는 추상 ID 인터페이스와 내장된 ImplStruct를 통해 Count 함수가 모든 유형에서 작동할 수 있습니다. GetID 메서드를 구현하는 것입니다. 이 접근 방식은 공통 기능으로 다양한 데이터 유형을 처리할 때 유연성과 모듈성을 제공합니다.

위 내용은 Go에서 일반 메소드 매개변수를 사용하여 ID 속성이 있는 모든 유형에서 Count 함수가 작동하도록 하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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