Dalam Go, perbezaan utama antara kaedah kelas dan kaedah objek ialah penerimanya: kaedah kelas dipanggil dengan nama kelas, manakala kaedah objek memerlukan rujukan contoh. Kaedah kelas sesuai untuk operasi global, dan kaedah objek sesuai untuk operasi contoh tertentu. Langkah: Kaedah kelas: pengisytiharan kata kunci func, diletakkan dalam definisi jenis, dan penerima ialah kelas itu sendiri. Kaedah objek: pengisytiharan kata kunci func, diletakkan di bahagian penerima func bagi definisi jenis, dan penerima ialah penunjuk contoh.
Dalam bahasa Go, kita boleh menggunakan kaedah kelas dan kaedah objek untuk melaksanakan gelagat objek. Artikel ini akan membimbing anda langkah demi langkah melalui perbezaan antara kedua-dua kaedah dan cara menggunakannya.
Kaedah kelas ialah kaedah yang terikat kepada kelas itu sendiri. Mereka boleh dipanggil terus dengan nama kelas tanpa membuat contoh kelas. Dalam Go, kami mengisytiharkan kaedah kelas menggunakan kata kunci func
dan meletakkannya di dalam definisi type
. func
关键字声明类方法,并将其放在 type
定义中。
type Person struct { Name string } func (p Person) Greet() { fmt.Println("Hello, my name is " + p.Name) }
上面的示例定义了一个 Person
类型和与之关联的 Greet
类方法。我们可以使用 Person.Greet
直接调用此方法,而无需创建 Person
实例。
对象方法是与类实例相关的方法。它们只能通过实例调用,不能通过类名直接调用。在 Go 中,我们也使用 func
关键字声明对象方法,但我们会将其放入 type
定义的 func
接收器部分中。
type Person struct { Name string } func (p *Person) SetName(name string) { p.Name = name }
上面的示例定义了一个 Person
类型和一个名为 SetName
的对象方法。此方法需要一个 Person
指针作为接收器,这意味着它只能通过 Person
实例调用。
以下是一个使用类方法和对象方法的 Go 程序示例:
package main import "fmt" type Person struct { Name string } func (p Person) Greet() { fmt.Println("Hello, my name is " + p.Name) } func (p *Person) SetName(name string) { p.Name = name } func main() { person := Person{Name: "John Doe"} person.Greet() person.SetName("Jane Doe") person.Greet() }
在这个程序中,我们定义了一个 Person
类型及其关联的类方法 Greet
和对象方法 SetName
。我们创建了一个 Person
实例 person
,并使用其 Greet
方法和 SetName
方法对其进行操作。
类方法和对象方法之间的主要区别在于它们的接收器:
type
rrreeeOrang
dan kaedah kelas Greet
yang berkaitan. Kami boleh memanggil kaedah ini terus menggunakan Person.Greet
tanpa membuat contoh Orang
. func
, tetapi kami meletakkannya dalam bahagian penerima func
definisi type
. Contoh di atas mentakrifkan jenis Orang
dan kaedah objek bernama SetName
. Kaedah ini memerlukan penunjuk Orang
sebagai penerima, yang bermaksud ia hanya boleh dipanggil daripada contoh Orang
.
Orang
dan kaedah kelas yang berkaitan Greet
dan kaedah objek SetName
. Kami mencipta contoh Orang
orang
dan mengendalikannya menggunakan kaedah Greet
dan kaedah SetName
nya. 🎜🎜Perbezaan Utama🎜🎜Perbezaan utama antara kaedah kelas dan kaedah objek ialah penerimanya: 🎜Atas ialah kandungan terperinci Belajar kaedah kelas bahasa dan kaedah objek dari awal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!