首頁 >後端開發 >Golang >當子結構中重載時,如何存取 Go 中的嵌入類型的方法?

當子結構中重載時,如何存取 Go 中的嵌入類型的方法?

Patricia Arquette
Patricia Arquette原創
2024-11-14 22:50:02874瀏覽

How Can I Access an Embedded Type's Method in Go When It's Overloaded in the Child Struct?

Go 中的方法重載:存取嵌入式類型方法

在Go 中使用結構體時,可以在父級和父級上定義方法嵌入(巢狀)結構。然而,當子結構中的方法被重載時,直接存取基結構的方法似乎是不可能的。

使用方法重載重寫方法

在提供的範例中, Employee 結構嵌入了 Human 結構。這兩個結構都定義了 SayHi() 方法。但是,Employee 結構體的 SayHi() 方法會覆寫 Human 結構體中的方法。

存取嵌入類型方法

要存取嵌入結構體的方法,儘管有重載方法,您可以使用以下語法:

parentMember.embeddedMemberName.methodName()

在這種情況下,呼叫Human Employee 結構體中的SayHi()方法,您可以使用:

sam.Human.SayHi()

程式碼範例

以下範例示範了存取嵌入結構體的方法:

package main

import "fmt"

type Human struct {
    name string
    age int
    phone string
}

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

type Employee struct {
    Human
    company string
}

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()
}

輸出:

Hi, I am Sam, I work at Golang Inc. Call me on 111-888-XXXX
Hi, I am Sam you can call me on 111-888-XXXX

這表明即使在子結構中重載方法,您仍然可以訪問嵌入類型的方法使用上述語法。

以上是當子結構中重載時,如何存取 Go 中的嵌入類型的方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn