Rumah  >  Artikel  >  pembangunan bahagian belakang  >  panggilan kaedah golang

panggilan kaedah golang

WBOY
WBOYasal
2023-05-16 18:32:08783semak imbas

Bahasa Go ialah bahasa pengaturcaraan yang cekap, ringkas dan boleh dipercayai, yang telah digemari oleh pembangun sejak beberapa tahun kebelakangan ini. Dalam bahasa Go, panggilan kaedah ialah operasi biasa dan memainkan peranan penting dalam banyak aplikasi. Artikel ini akan meneroka secara mendalam prinsip asas, peraturan tatabahasa dan kemahiran praktikal panggilan kaedah dalam bahasa Go.

1. Prinsip asas

Dalam bahasa Go, panggilan kaedah mengikut prinsip asas berikut:

1. Kaedah ialah satu set fungsi berkaitan yang berfungsi bersama untuk dilaksanakan fungsi tertentu.

2. Dalam bahasa Go, panggilan kaedah adalah serupa dengan panggilan fungsi biasa, ia memerlukan sepasang kurungan selepas nama kaedah dan parameter boleh dihantar dalam kurungan.

3. Kaedah dalam bahasa Go boleh ditakrifkan sebagai jenis nilai dan jenis rujukan kaedah jenis nilai hanya boleh beroperasi pada salinan penerima, manakala kaedah jenis rujukan boleh beroperasi secara langsung pada penerima itu sendiri.

4 Kaedah boleh ditakrifkan dalam mana-mana struktur data, termasuk struct, antara muka, tatasusunan, dll.

2. Peraturan tatabahasa

Dalam bahasa Go, kaedah tatabahasa adalah seperti berikut:

1 >func (terima jenis penerima) nama kaedah (senarai parameter) (senarai nilai pulangan) {}

di mana jenis penerima boleh menjadi jenis nilai atau jenis rujukan, nama kaedah biasanya perkataan atau frasa deskriptif , senarai parameter dan Senarai nilai pulangan adalah pilihan.

2. Format memanggil kaedah ialah:

Penerima.Nama kaedah (senarai parameter)

Antaranya, penerima boleh menjadi pembolehubah jenis nilai atau rujukan jenis, kaedah Senarai nama dan parameter mestilah sama persis dengan nama kaedah dan senarai parameter yang ditakrifkan oleh jenis penerima, dan kaedah mesti dilaksanakan mengikut jenis.

3. Kemahiran praktikal

Dalam aplikasi praktikal, kita selalunya perlu menggunakan panggilan kaedah untuk melaksanakan fungsi logik yang kompleks. Di bawah, kami akan membincangkan beberapa petua praktikal untuk menggunakan panggilan kaedah dengan lebih baik dalam Go.

1. Gunakan jenis penerima penunjuk apabila boleh

Kaedah jenis nilai hanya boleh beroperasi pada salinan penerima, manakala kaedah jenis rujukan boleh beroperasi secara langsung pada penerima itu sendiri. Oleh itu, apabila mereka bentuk struktur data, kita biasanya harus memberi keutamaan untuk menggunakan jenis penunjuk sebagai penerima kaedah untuk mencapai operasi data yang lebih fleksibel dan cekap.

Sebagai contoh, berikut ialah jenis struct yang mudah, kita boleh mengendalikannya dengan mentakrifkan kaedah jenis penunjuk:

type User struct {

name   string
gender string
age    int

}

func (u *Pengguna) SetName(rentetan nama) {

u.name = name

}

func (u *Pengguna) SetGender(rentetan jantina) {

u.gender = gender

}

func (u *User) SetAge(age int) {

u.age = age

}

2 Gunakan sepenuhnya panggilan kaedah jenis antara muka

Dalam bahasa Go , Kaedah memanggil jenis antara muka ialah ciri berkuasa yang boleh membantu kami mencapai pengaturcaraan yang fleksibel dan boleh dikembangkan.

Sebagai contoh, berikut ialah definisi jenis antara muka yang mudah Kita boleh melaksanakan operasi yang berbeza melalui kaedah jenis antara muka:

taip Antara muka bentuk {

Area() float64
Perimeter() float64

}<.>

func main() {

rect := &Rectangle{20, 30}
fmt.Println("Rectangle area:", rect.Area())
fmt.Println("Rectangle perimeter:", rect.Perimeter())

circle := &Circle{15}
fmt.Println("Circle area:", circle.Area())
fmt.Println("Circle perimeter:", circle.Perimeter())

}

Dalam kod di atas, kami mentakrifkan antara muka Shape, yang mengandungi dua kaedah Area() dan Perimeter(), yang mengira The luas dan perimeter suatu rajah. Kemudian, kami mentakrifkan dua jenis khusus yang melaksanakan antara muka melalui struktur Rectangle dan Circle, dan melaksanakan kaedah mereka.

Dengan menggunakan kaedah panggilan jenis antara muka, kami boleh melaksanakan fungsi yang sama dalam struktur data yang berbeza, dengan itu mencapai pengaturcaraan yang lebih fleksibel dan berskala.

3. Elakkan kaedah terlebih muatan

Dalam bahasa pengaturcaraan lain, kaedah terlebih muatan adalah mekanisme biasa dengan mentakrifkan nama kaedah yang sama dalam kelas yang sama, tetapi jenis parameter Atau kuantiti yang berbeza untuk mencapai fungsi yang berbeza . Walau bagaimanapun, dalam bahasa Go, kelebihan beban kaedah tidak dibenarkan, kerana prinsip reka bentuk bahasa Go adalah kesederhanaan dan kejelasan, dan tidak boleh terlalu rumit.

Sebagai contoh, berikut ialah contoh ralat di mana kami cuba mentakrifkan dua kaedah bernama Print dalam jenis struct yang sama, tetapi dengan jenis atau nombor parameter yang berbeza:

type User struct {

name   string
gender string
age    int

}

func (u *Pengguna) Cetak() {

fmt.Println(u.name, u.gender, u.age)

}

func (u *Pengguna) Cetak(rentetan mesej) {

fmt.Println(msg, u.name, u.gender, u.age)

}

Dalam kod di atas, kami cuba melaksanakan dua kaedah bernama Print, tetapi dengan jenis atau nombor parameter yang berbeza. Walau bagaimanapun, pendekatan ini tidak dibenarkan kerana bahasa Go mempunyai sekatan yang jelas pada nama kaedah dan tandatangan, sekali gus mengelakkan kerumitan yang disebabkan oleh kelebihan beban kaedah.

4. Ringkasan

Artikel ini meneroka secara mendalam prinsip asas, peraturan tatabahasa dan kemahiran praktikal kaedah panggilan dalam bahasa Go. Dengan memahami pengetahuan ini, kami boleh menggunakan panggilan kaedah dengan lebih baik dalam bahasa Go dan mencapai pengaturcaraan yang lebih cekap dan fleksibel. Pada masa yang sama, kita juga mesti memberi perhatian untuk mengikut prinsip reka bentuk bahasa Go dan mengelakkan pelaksanaan kod yang terlalu rumit, untuk mengekalkan kebolehbacaan dan kebolehselenggaraan kod.

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