Rumah  >  Artikel  >  pembangunan bahagian belakang  >  kaedah menerima golang

kaedah menerima golang

WBOY
WBOYasal
2023-05-10 09:39:36539semak imbas

Golang ialah bahasa pengaturcaraan yang sangat popular dengan kecekapan dan kesesuaian. Di Golang, kami boleh menggunakan kaedah penerima untuk melaksanakan pengaturcaraan berorientasikan objek, yang membolehkan kami mentakrifkan kaedah dan melaksanakan antara muka pada jenis struktur. Kaedah penerima membolehkan kami melaksanakan operasi tersuai dengan mudah pada jenis data, memberikan lebih fleksibiliti dan kebolehlanjutan untuk aplikasi kami.

Artikel ini akan memperkenalkan kaedah penerima dalam Golang, termasuk sintaks asas, kes penggunaan dan aplikasi kaedah penerima dalam amalan.

Sintaks asas

Kaedah penerima dalam Golang ialah kaedah yang ditakrifkan pada jenis Sintaksnya adalah seperti berikut:

func (t Type) methodName(parameter1 type1, parameter2 type2) returnType {
   // method body
}

di mana kata kunci func digunakan Untuk mentakrifkan. fungsi; t Type dalam kurungan menunjukkan bahawa ini adalah kaedah penerima pada jenis t, juga dipanggil kaedah penerima ialah methodName dalam kurungan Senarai parameter kaedah; akhirnya, nilai pulangan ialah parameter1 type1, parameter2 type2. returnType

Adalah penting untuk ambil perhatian bahawa apabila kita mentakrifkan kaedah penerima dalam pengepala kaedah, kita boleh menggunakan sebarang nama yang mewakili jenis, bukan hanya

. Contohnya: t

func (x MyType) MethodName() {
   // method body
}

Parameter kaedah penerima

Kaedah penerima boleh mempunyai satu atau lebih parameter dan parameter ini boleh terdiri daripada sebarang jenis data. Biasanya, parameter pertama ialah penerima itu sendiri, dan parameter berikut adalah parameter yang diperlukan oleh kaedah tersebut.

Penerima ialah objek, yang boleh menjadi jenis penunjuk atau jenis bukan penunjuk. Jika kita menggunakan jenis bukan penunjuk sebagai penerima maka kita tidak akan dapat mengubah suai nilainya dalam kaedah sedangkan jika kita menggunakan jenis penunjuk sebagai penerima maka kita boleh mengubah suai nilainya.

Berikut ialah contoh menggunakan jenis bukan penuding sebagai penerima:

type MyInt int

func (m MyInt) Add(val int) int {
   return int(m) + val
}

func main() {
   num := MyInt(5)
   newNum := num.Add(2)
   fmt.Println(newNum)
}

Dalam contoh di atas, kami mentakrifkan jenis jenis

, dan kemudian kami Kaedah penerima MyInt ditakrifkan. Kaedah ini mempunyai parameter Add jenis int, yang menambah nilai val jenis val dan MyInt. m

Dalam fungsi

, kami mencipta nilai main jenis MyInt dan memanggil kaedah numnya. Kaedah ini akan mengembalikan nilai baharu jenis Add dan menetapkannya kepada MyInt, dan kemudian kami akan mencetak newNum. Kita dapat melihat bahawa hasil output ialah 7, yang bermaksud bahawa kita berjaya memanggil kaedah newNum dan mendapat nilai baharu. Add

Seterusnya, mari kita lihat contoh menggunakan jenis penuding sebagai penerima:

type Rectangle struct {
   width, height int
}

func (r *Rectangle) Area() int {
   return r.width * r.height
}

func main() {
   rect := &Rectangle{width: 10, height: 5}
   fmt.Println(rect.Area())
}

Dalam contoh di atas, kami mentakrifkan struktur

, yang mempunyai dua integer Medan Rectangle dan width. Kami mentakrifkan kaedah penerima height pada struktur ini, yang tidak mempunyai parameter dan jenis pemulangan Area. int

Dalam fungsi

, kami mencipta penunjuk main jenis Rectangle dan memanggil kaedah rectnya. Outputnya ialah 50, yang bermaksud kami berjaya memanggil kaedah Area dan mengira luas segi empat tepat. Area

Perlu diingatkan bahawa dalam contoh ini kita menggunakan jenis penunjuk sebagai penerima. Ini membolehkan kami mengubah suai nilai struktur

dalam kaedah, dengan itu mencapai operasi yang lebih fleksibel. Rectangle

Pemilihan jenis penerima kaedah

Apabila memilih jenis penerima kaedah, kita perlu mengambil kira faktor berikut:

    Tujuan pencapaian: Jika tujuan kita adalah untuk mengubah suai Untuk nilai objek, kita perlu menggunakan jenis penunjuk; jika tujuan kita hanya untuk mengakses objek, kita boleh menggunakan jenis bukan penunjuk. Oleh itu, pilihan penerima perlu dibuat berdasarkan kes demi kes.
  1. Pertimbangan prestasi: Menggunakan penerima jenis bukan penuding boleh meningkatkan prestasi kerana ia mengelakkan overhed penyahrujukan penuding. Sebaliknya, menggunakan penerima jenis penunjuk mengelakkan overhed prestasi menyalin struktur data yang besar.
Dalam amalan, kita perlu memilih jenis penerima yang hendak digunakan berdasarkan situasi tertentu. Jika tujuan kita adalah untuk mengubah suai nilai objek, dan objek itu besar, maka kita harus menggunakan jenis penunjuk sebagai penerima jika tujuan kita adalah untuk mengakses objek, dan objek itu kecil, maka kita boleh menggunakan bukan -jenis penunjuk sebagai penerima.

Kes Aplikasi

Melalui kaedah penerima, kami boleh melaksanakan operasi tersuai dengan mudah pada jenis data. Berikut ialah beberapa kes aplikasi menggunakan kaedah penerima:

    Mentakrifkan kaedah penerima pada jenis rentetan
  1. type MyString string
    
    func (s MyString) Reverse() string {
       str := string(s)
       runes := []rune(str)
       for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
          runes[i], runes[j] = runes[j], runes[i]
       }
       return string(runes)
    }
    
    func main() {
       str := MyString("hello world")
       reversed := str.Reverse()
       fmt.Println(reversed)
    }
Dalam contoh di atas, kami mentakrifkan jenis

dan mentakrifkan kaedah penerima MyString padanya. Kaedah ini mengembalikan Reverse dalam susunan terbalik. Dalam fungsi string, kami mencipta nilai jenis main dan memanggil kaedah MyString, dan hasil output akhir ialah Reverse. dlrow olleh

  1. 在时间类型上定义接收器方法
type MyTime time.Time

func (t MyTime) Format(format string) string {
   return time.Time(t).Format(format)
}

func main() {
   t := MyTime(time.Now())
   fmt.Println(t.Format("2006-01-02"))
}

在上面的例子中,我们定义了一个MyTime类型,并在它上面定义了一个接收器方法Format。该方法使用给定的格式将MyTime类型的值转换为字符串。在main函数中,我们创建一个MyTime类型的值并调用Format方法,最终输出结果是当前日期的字符串表示形式,例如2021-06-15

总结

在Golang中,接收器方法是实现面向对象编程的核心机制,它可以在结构体类型上定义方法以及实现接口。接收器方法可以让我们方便地在数据类型上实现自定义操作,从而为我们的应用程序提供更多的灵活性和扩展性。我们需要根据具体情况选择接收器类型,并在实践中灵活运用接收器方法,实现自己的需求。

Atas ialah kandungan terperinci kaedah menerima 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