> 백엔드 개발 > Golang > 메소드 오버로딩이 사용될 때 Go에서 임베디드 유형의 메소드에 어떻게 액세스할 수 있나요?

메소드 오버로딩이 사용될 때 Go에서 임베디드 유형의 메소드에 어떻게 액세스할 수 있나요?

Linda Hamilton
풀어 주다: 2024-12-05 18:35:15
원래의
255명이 탐색했습니다.

How can I access methods of an embedded type in Go when Method Overloading is used?

Go의 메서드 오버로딩 및 임베디드 유형 액세스

Go에서 메서드 오버로딩을 사용하면 이름은 같지만 다른 여러 메서드를 정의할 수 있습니다. 매개변수 또는 반환 유형. Go 구조체에 다른 구조체가 포함된 유형으로 포함되어 있으면 포함된 유형의 메서드에 액세스해야 하는 문제가 발생합니다.

내장 유형 메서드에 액세스

액세스하려면 포함된 유형의 메소드:

  1. 부모 내에 포함된 유형을 선언합니다. struct.
  2. 메서드 유형의 이름을 상위 구조체의 멤버로 사용하여 해당 메서드에 액세스하세요.

고려하세요. 다음 코드:

package main

import "fmt"

type Human struct {
    name string
    age int
    phone string
}

type Employee struct {
    Human 
    company string
}

func (h *Human) SayHi() {
    fmt.Printf("Hi, I am %s you can call me on %s\n", h.name, h.phone)
}

func (e *Employee) SayHi() {
    fmt.Printf("Hi, I am %s, I work at %s. Call me on %s\n", e.name,
        e.company, e.phone)
}

func main() {
    sam := Employee{Human{"Sam", 45, "111-888-XXXX"}, "Golang Inc"}
    sam.SayHi() // calls Employee.SayHi
    sam.Human.SayHi() // calls Human.SayHi
}
로그인 후 복사

여기서 예:

  • Human 구조체는 Employee 구조체에 포함되어 있습니다.
  • 상위 구조체(Employee)와 포함된 구조체(Human)에는 모두 SayHi() 메서드가 있습니다.
  • Human 구조체의 SayHi() 메서드에 액세스하려면 다음을 사용합니다. sam.Human.SayHi().

메서드 오버로딩 및 임베디드 유형

내장 유형의 메소드가 오버로드되면 하위 구조체가 모든 오버로드에 액세스할 수 있습니다. . 예:

package main

import "fmt"

type A struct {
    SayHi func(string)
}

type B struct {
    A
}

func main() {
    a := B{}
    
    a.SayHi = func(s string) {
        fmt.Println("Hello", s)
    }
    
    a.SayHi("World") // prints "Hello World"
}
로그인 후 복사

이 예에서:

  • A 구조체에는 문자열 매개 변수를 사용하는 SayHi라는 메서드가 있습니다.
  • B 구조체에는 A가 포함되어 있습니다. 따라서 A의 SayHi 메소드에 액세스할 수 있습니다.
  • B의 SayHi 메소드에 새로운 기능을 할당할 수 있습니다. 원래 SayHi 메서드를 오버로드합니다.

위 내용은 메소드 오버로딩이 사용될 때 Go에서 임베디드 유형의 메소드에 어떻게 액세스할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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