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 중국어 웹사이트의 기타 관련 기사를 참조하세요!