Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Perkara utama untuk belajar tentang kaedah dengan nama yang sama di Golang

Perkara utama untuk belajar tentang kaedah dengan nama yang sama di Golang

WBOY
WBOYasal
2024-02-23 20:39:07447semak imbas

Perkara utama untuk belajar tentang kaedah dengan nama yang sama di Golang

Kaedah dengan nama yang sama dalam bahasa Golang merujuk kepada mentakrifkan berbilang kaedah pada masa yang sama dalam struktur, dengan nama kaedah yang sama tetapi jenis penerima yang berbeza. Apabila menggunakan kaedah dengan nama yang sama, anda perlu memberi perhatian kepada beberapa butiran, jika tidak, ia boleh menyebabkan ralat penyusunan atau tingkah laku yang tidak dijangka.

Berikut akan membincangkan langkah berjaga-jaga untuk menguasai kaedah Golang dengan nama yang sama melalui contoh kod tertentu.

Katakan kita mempunyai struktur bernama Person Strukturnya ditakrifkan seperti berikut:

package main

import "fmt"

type Person struct {
    Name string
}

func (p Person) SayHello() {
    fmt.Printf("Hello, I am %s
", p.Name)
}

func (p *Person) SayHi() {
    fmt.Printf("Hi, I am %s
", p.Name)
}

Dalam kod di atas, kita mentakrifkan struktur bernama Person, yang mempunyai dua kaedah dengan nama yang sama: SayHello dan SayHi, masing-masing jenis dan penunjuk kepada jenis Orang sebagai penerima. Seterusnya, kami mencipta contoh jenis Orang dan penunjuk kepada jenis Orang:

func main() {
    p1 := Person{Name: "Alice"}
    p2 := &Person{Name: "Bob"}

    p1.SayHello() // 输出:Hello, I am Alice
    p1.SayHi()    // 编译错误:cannot call pointer method on p1
    p2.SayHello() // 编译错误:cannot call value method on p2
    p2.SayHi()    // 输出:Hi, I am Bob
}

Dalam fungsi utama, kami mencipta tika jenis Orang p1 dan penunjuk kepada jenis Orang p2. Kemudian gunakan kedua-dua objek ini untuk memanggil kaedah SayHello dan SayHi masing-masing. Kita dapat melihat bahawa memanggil kaedah p1 akan menyebabkan ralat penyusunan kerana kaedah SayHi memerlukan penerima penunjuk sama, memanggil kaedah p2 juga akan menyebabkan ralat penyusunan kerana kaedah SayHello memerlukan penerima nilai. Kaedah hanya boleh dipanggil dengan betul jika jenis penerima kaedah sepadan dengan jenis objek yang memanggil kaedah.

Selain itu, perlu diingatkan bahawa apabila melaksanakan antara muka, jika terdapat kaedah dengan nama yang sama dalam struktur yang melaksanakan antara muka, hanya kaedah struktur yang mematuhi kontrak antara muka yang akan menentukan pelaksanaan kaedah dan penunjuk berdasarkan jenis penerima kaedah hanya boleh melaksanakan antara muka jenis penunjuk, dan kaedah jenis nilai hanya boleh melaksanakan antara muka jenis nilai. Oleh itu, apabila menggunakan kaedah dengan nama yang sama untuk melaksanakan antara muka, penjagaan khas mesti diambil untuk memastikan jenis penerima dan jenis antara muka adalah konsisten.

Secara umum, langkah berjaga-jaga untuk menguasai kaedah Golang dengan nama yang sama termasuk: memahami definisi kaedah dengan nama yang sama, mengelakkan ralat penyusunan semasa memanggil, dan memberi perhatian kepada ketekalan jenis penerima dan jenis antara muka semasa melaksanakan antara muka. Hanya dengan memahami dan menggunakan kaedah dengan nama yang sama dengan betul, kita boleh memberikan permainan penuh kepada ciri-ciri bahasa Golang dan menulis kod yang cekap dan boleh dipercayai.

Atas ialah kandungan terperinci Perkara utama untuk belajar tentang kaedah dengan nama yang sama di Golang. 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