Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mengakses Kaedah Jenis Terbenam dalam Go Apabila Ia Terlalu Beban dalam Struktur Kanak-kanak?

Bagaimanakah Saya Boleh Mengakses Kaedah Jenis Terbenam dalam Go Apabila Ia Terlalu Beban dalam Struktur Kanak-kanak?

Patricia Arquette
Patricia Arquetteasal
2024-11-14 22:50:02871semak imbas

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

Pembebanan Kaedah dalam Go: Mengakses Kaedah Jenis Terbenam

Apabila bekerja dengan struct dalam Go, adalah mungkin untuk menentukan kaedah pada kedua-dua induk dan struct terbenam (bersarang). Walau bagaimanapun, apabila kaedah terlebih beban dalam struct kanak-kanak, mengakses kaedah struct asas secara langsung mungkin kelihatan mustahil.

Mengatasi Kaedah dengan Melebihkan Kaedah

Dalam contoh yang disediakan, struct Pekerja membenamkan struct Manusia. Kedua-dua struct mentakrifkan kaedah SayHi(). Walau bagaimanapun, kaedah SayHi() struct Pekerja mengatasi kaedah dalam struct Manusia.

Mengakses Kaedah Jenis Terbenam

Untuk mengakses kaedah struct terbenam, walaupun kaedah terlebih beban , anda boleh menggunakan sintaks berikut:

parentMember.embeddedMemberName.methodName()

Dalam ini kes, untuk memanggil kaedah SayHi() struct Manusia daripada struct Pekerja, anda akan menggunakan:

sam.Human.SayHi()

Contoh Kod

Contoh berikut menunjukkan mengakses terbenam struct kaedah:

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

Output:

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

Ini menunjukkan bahawa walaupun kaedah terlebih beban dalam struct kanak-kanak, anda masih boleh mengakses kaedah jenis terbenam menggunakan sintaks yang diterangkan di atas.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Kaedah Jenis Terbenam dalam Go Apabila Ia Terlalu Beban dalam Struktur Kanak-kanak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn