Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Nilai kaedah fungsi Golang dan kaedah pelaksanaan ungkapan kaedah

Nilai kaedah fungsi Golang dan kaedah pelaksanaan ungkapan kaedah

WBOY
WBOYasal
2023-05-16 20:40:53726semak imbas

Nilai kaedah dan kaedah pelaksanaan ungkapan kaedah bagi fungsi Golang

Di Golang, fungsi adalah warga kelas pertama. Ini bermakna fungsi secara sintaksis sama seperti nilai lain dan boleh disimpan dalam pembolehubah, dihantar ke fungsi, dan dikembalikan daripada fungsi. Di samping itu, Golang juga menyediakan kaedah untuk memanjangkan tingkah laku jenis. Kaedah ialah fungsi khas yang wujud pada jenis dan boleh mengakses medan dan kaedah jenis tersebut. Dalam artikel ini, kita akan membincangkan nilai kaedah dan kaedah pelaksanaan ungkapan kaedah bagi fungsi Golang.

Nilai kaedah dan ungkapan kaedah

Mula-mula, mari kita lihat nilai kaedah dan ungkapan kaedah. Nilai kaedah ialah nilai fungsi yang terikat kepada penerima. Ia serupa dengan fungsi biasa, tetapi ia juga mengandungi penerima, yang ditentukan apabila fungsi itu ditakrifkan. Oleh itu, nilai kaedah boleh dihantar dan disimpan seperti fungsi biasa, tetapi ia juga mengekalkan rujukan kepada penerima.

Berikut ialah contoh:

type Rect struct {
  width, height float64
}

func (r Rect) Area() float64 {
  return r.width * r.height
}

func main() {
  r := Rect{3, 4}

  // 获取 Rect 类型的 Area 方法值
  f := r.Area
  // 调用方法值
  fmt.Println(f())
}

Dalam contoh di atas, kami mentakrifkan jenis bernama Rect dan kaedah bernama Area untuknya . Penerima kaedah Area ini adalah daripada jenis Rect, jadi ia hanya boleh dipanggil pada kejadian Rect. Dalam fungsi main, kami mencipta contoh Rect r dan mendapatkan nilai kaedah Areanya, menyimpannya dalam pembolehubah bernama f. Memandangkan f ialah nilai fungsi, kita boleh memanggilnya seperti fungsi biasa, tetapi ia juga mengekalkan rujukan kepada contoh r, jadi ia dihantar secara automatik dalam r apabila dipanggil.

Serupa dengan nilai kaedah, ungkapan kaedah ialah ungkapan fungsi yang terikat kepada penerima. Ia serupa dengan nilai kaedah, tetapi ia tidak bergantung pada mana-mana contoh dan boleh dipanggil apabila tiada contoh. Ungkapan kaedah menggunakan nama jenis sebagai penerima.

Berikut ialah contoh penggunaan ungkapan kaedah:

type Rect struct {
  width, height float64
}

func (r Rect) Area() float64 {
  return r.width * r.height
}

func main() {
  // 获取 Rect 类型的 Area 方法表达式
  f := Rect.Area
  fmt.Println(f(Rect{3, 4}))
}

Dalam contoh di atas, kami menggunakan Rect.Area untuk mendapatkan Rect ungkapan kaedah jenis Area. Memandangkan ungkapan kaedah tidak bergantung pada mana-mana kejadian, kami boleh terus menghantar tika Rect dan ia akan digunakan secara automatik sebagai penerima apabila dipanggil.

Cara melaksanakan kaedah

Di Golang, terdapat dua cara untuk melaksanakan kaedah: penerima nilai dan penerima penunjuk. Penerima nilai menghantar nilai sebagai penerima kepada kaedah, dan penerima penunjuk menghantar penunjuk sebagai penerima kepada kaedah. Penerima nilai akan menyalin nilai medan dalam kaedah, manakala penerima penunjuk akan melepasi penunjuk sebagai penerima supaya nilai medan boleh diubah suai secara langsung dalam kaedah.

Berikut ialah contoh penggunaan penerima nilai:

type Rect struct {
  width, height float64
}

func (r Rect) Scale(factor float64) {
  r.width *= factor
  r.height *= factor
}

func main() {
  r := Rect{3, 4}
  r.Scale(2)
  fmt.Println(r.width, r.height)
}

Dalam contoh di atas, kami telah mentakrifkan kaedah penerima nilai bernama Scale. Ia mengambil apungan factor dan mendarabkan lebar dan tinggi Rect dengannya. Apabila kaedah dipanggil, terima kasih kepada penggunaan penerima nilai, nilai contoh r disalin ke dalam kaedah dan diubah suai. Jadi walaupun lebar dan ketinggian diubah suai dalam kaedah, kami masih mempunyai akses kepada nilai asal di luar fungsi.

Berikut ialah contoh menggunakan penerima penunjuk:

type Rect struct {
  width, height float64
}

func (r *Rect) Scale(factor float64) {
  r.width *= factor
  r.height *= factor
}

func main() {
  r := &Rect{3, 4}
  r.Scale(2)
  fmt.Println(r.width, r.height)
}

Dalam contoh di atas, kami telah mentakrifkan kaedah penerima penunjuk bernama Scale. Ia memerlukan apungan factor dan mendarabkan lebar dan tinggi Rect dengannya. Apabila memanggil kaedah, terima kasih kepada penggunaan penerima penunjuk, penunjuk kepada contoh r dihantar ke kaedah dan medannya boleh diubah suai secara langsung. Oleh itu, nilai yang diubah suai juga boleh diakses di luar fungsi.

Kesimpulan

Nilai kaedah dan ungkapan kaedah fungsi Golang sangat berguna, dan ia boleh meningkatkan kebolehbacaan dan kebolehgunaan semula kod. Selain itu, apabila melaksanakan kaedah, kita perlu memilih antara menggunakan penerima nilai atau penerima penunjuk, bergantung pada spesifik kod. Di atas adalah pengenalan kepada nilai kaedah dan kaedah pelaksanaan ungkapan kaedah fungsi Golang saya harap ia akan membantu kerja pembangunan anda.

Atas ialah kandungan terperinci Nilai kaedah fungsi Golang dan kaedah pelaksanaan ungkapan kaedah. 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