Golang의 일반 메소드 매개변수
Go에서는 다양한 유형과 작동하는 일반 메소드를 정의하여 유연성과 코드 재사용성을 높일 수 있습니다. . 제공된 코드의 문제를 해결하기 위해 인터페이스 및 내장 유형의 사용을 살펴보겠습니다.
인터페이스 사용
인터페이스는 유형이 인터페이스를 만족하도록 구현해야 합니다. 메소드 매개변수에 인터페이스를 사용하면 특정 유형에서 메소드를 분리하여 인터페이스를 구현하는 모든 유형과 함께 사용할 수 있습니다.
다음 코드를 고려하세요.
<code class="go">type Mammal interface { GetID() int GetName() string }</code>
여기 , Mammal은 GetID와 GetName이라는 두 가지 메서드를 사용하여 인터페이스를 정의합니다.
임베딩 인터페이스
내장 인터페이스를 사용하면 하나 이상의 인터페이스 메서드를 상속하는 유형을 만들 수 있습니다. 예를 들어 Human 유형은 Mammal 인터페이스를 포함할 수 있습니다.
<code class="go">type Human struct { MammalImpl HairColor string }</code>
구현
다음으로 MammalImpl과 HumanImpl 모두에 대해 GetID 및 GetName 메서드를 구현해야 합니다. . HumanImpl은 MammalImpl을 포함하므로 GetID 및 GetName에 대한 구현을 상속합니다.
<code class="go">type MammalImpl struct { ID int Name string } func (m MammalImpl) GetID() int { return m.ID } func (m MammalImpl) GetName() string { return m.Name } type HumanImpl struct { MammalImpl HairColor string }</code>
Count 함수 수정
이제 Count 함수를 수정하여 Mammal 인터페이스를 만족하는 모든 유형의 슬라이스:
<code class="go">func Count(ms []Mammal) *[]string { IDs := make([]string, len(ms)) for i, m := range ms { IDs[i] = strconv.Itoa(m.GetID()) // Access ID via the method: GetID() } return &IDs }</code>
포유류와 인간의 슬라이스 생성
마지막으로 Mammal을 구현하는 다양한 유형의 슬라이스를 생성할 수 있습니다.
<code class="go">mammals := []Mammal{ MammalImpl{1, "Carnivorious"}, MammalImpl{2, "Ominivorious"}, } humans := []Mammal{ HumanImpl{MammalImpl: MammalImpl{ID: 1, Name: "Peter"}, HairColor: "Black"}, HumanImpl{MammalImpl: MammalImpl{ID: 2, Name: "Paul"}, HairColor: "Red"}, }</code>
결론
인터페이스와 임베디드 유형을 사용하면 다양한 데이터 유형과 작동하는 일반 메소드를 생성하여 Go 프로그램에서 더 많은 유연성과 코드 재사용성을 제공할 수 있습니다. .
위 내용은 Go에서 인터페이스와 임베디드 유형을 사용하여 일반 메서드를 만들려면 어떻게 해야 하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!