ホームページ > バックエンド開発 > Golang > メソッドのオーバーロードが使用されている場合、Go で埋め込み型のメソッドにアクセスするにはどうすればよいですか?

メソッドのオーバーロードが使用されている場合、Go で埋め込み型のメソッドにアクセスするにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-05 18:35:15
オリジナル
269 人が閲覧しました

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 メソッドにアクセスできます。
  • 新しい関数を A の SayHi メソッドに割り当てることができます。 B、元の SayHi メソッドをオーバーロードします。

以上がメソッドのオーバーロードが使用されている場合、Go で埋め込み型のメソッドにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート