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

Nilai kaedah fungsi Golang dan kaedah pelaksanaan ungkapan kaedah

May 16, 2023 pm 08:40 PM
golang nilai kaedah ungkapan kaedah

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())
}
Salin selepas log masuk

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}))
}
Salin selepas log masuk

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)
}
Salin selepas log masuk

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)
}
Salin selepas log masuk

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 Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1662
14
Tutorial PHP
1261
29
Tutorial C#
1234
24
Bagaimana untuk membaca dan menulis fail dengan selamat menggunakan Golang? Bagaimana untuk membaca dan menulis fail dengan selamat menggunakan Golang? Jun 06, 2024 pm 05:14 PM

Membaca dan menulis fail dengan selamat dalam Go adalah penting. Garis panduan termasuk: Menyemak kebenaran fail Menutup fail menggunakan tangguh Mengesahkan laluan fail Menggunakan tamat masa konteks Mengikuti garis panduan ini memastikan keselamatan data anda dan keteguhan aplikasi anda.

Bagaimana untuk mengkonfigurasi kolam sambungan untuk sambungan pangkalan data Golang? Bagaimana untuk mengkonfigurasi kolam sambungan untuk sambungan pangkalan data Golang? Jun 06, 2024 am 11:21 AM

Bagaimana untuk mengkonfigurasi pengumpulan sambungan untuk sambungan pangkalan data Go? Gunakan jenis DB dalam pakej pangkalan data/sql untuk membuat sambungan pangkalan data untuk mengawal bilangan maksimum sambungan serentak;

Bagaimana untuk menyimpan data JSON ke pangkalan data di Golang? Bagaimana untuk menyimpan data JSON ke pangkalan data di Golang? Jun 06, 2024 am 11:24 AM

Data JSON boleh disimpan ke dalam pangkalan data MySQL dengan menggunakan perpustakaan gjson atau fungsi json.Unmarshal. Pustaka gjson menyediakan kaedah kemudahan untuk menghuraikan medan JSON dan fungsi json.Unmarshal memerlukan penuding jenis sasaran kepada data JSON unmarshal. Kedua-dua kaedah memerlukan penyediaan pernyataan SQL dan melaksanakan operasi sisipan untuk mengekalkan data ke dalam pangkalan data.

Rangka Kerja Golang lwn Rangka Kerja Go: Perbandingan Seni Bina Dalaman dan Ciri Luaran Rangka Kerja Golang lwn Rangka Kerja Go: Perbandingan Seni Bina Dalaman dan Ciri Luaran Jun 06, 2024 pm 12:37 PM

Perbezaan antara rangka kerja GoLang dan rangka kerja Go ditunjukkan dalam seni bina dalaman dan ciri luaran. Rangka kerja GoLang adalah berdasarkan perpustakaan standard Go dan meluaskan fungsinya, manakala rangka kerja Go terdiri daripada perpustakaan bebas untuk mencapai tujuan tertentu. Rangka kerja GoLang lebih fleksibel dan rangka kerja Go lebih mudah digunakan. Rangka kerja GoLang mempunyai sedikit kelebihan dalam prestasi dan rangka kerja Go lebih berskala. Kes: gin-gonic (rangka Go) digunakan untuk membina REST API, manakala Echo (rangka kerja GoLang) digunakan untuk membina aplikasi web.

Berubah dari front-end ke pembangunan back-end, adakah lebih menjanjikan untuk belajar Java atau Golang? Berubah dari front-end ke pembangunan back-end, adakah lebih menjanjikan untuk belajar Java atau Golang? Apr 02, 2025 am 09:12 AM

Laluan Pembelajaran Backend: Perjalanan Eksplorasi dari Front-End ke Back-End sebagai pemula back-end yang berubah dari pembangunan front-end, anda sudah mempunyai asas Nodejs, ...

Tutorial praktikal pembangunan rangka kerja Golang: Soalan Lazim Tutorial praktikal pembangunan rangka kerja Golang: Soalan Lazim Jun 06, 2024 am 11:02 AM

Soalan Lazim pembangunan rangka kerja Go: Pemilihan rangka kerja: Bergantung pada keperluan aplikasi dan pilihan pembangun, seperti Gin (API), Echo (boleh berskala), Beego (ORM), Iris (prestasi). Pemasangan dan penggunaan: Gunakan arahan gomod untuk memasang, mengimport rangka kerja dan menggunakannya. Interaksi pangkalan data: Gunakan perpustakaan ORM, seperti gorm, untuk mewujudkan sambungan dan operasi pangkalan data. Pengesahan dan kebenaran: Gunakan pengurusan sesi dan perisian tengah pengesahan seperti gin-contrib/sesi. Kes praktikal: Gunakan rangka kerja Gin untuk membina API blog ringkas yang menyediakan POST, GET dan fungsi lain.

Bagaimana untuk mencari subrentetan pertama dipadankan dengan ungkapan biasa Golang? Bagaimana untuk mencari subrentetan pertama dipadankan dengan ungkapan biasa Golang? Jun 06, 2024 am 10:51 AM

Fungsi FindStringSubmatch mencari subrentetan pertama dipadankan dengan ungkapan biasa: fungsi mengembalikan hirisan yang mengandungi subrentetan yang sepadan, dengan elemen pertama ialah keseluruhan rentetan dipadankan dan elemen berikutnya ialah subrentetan individu. Contoh kod: regexp.FindStringSubmatch(teks,corak) mengembalikan sekeping subrentetan yang sepadan. Kes praktikal: Ia boleh digunakan untuk memadankan nama domain dalam alamat e-mel, contohnya: e-mel:="user@example.com", pattern:=@([^\s]+)$ untuk mendapatkan padanan nama domain [1].

Perpustakaan mana yang dibangunkan oleh syarikat besar atau disediakan oleh projek sumber terbuka yang terkenal? Perpustakaan mana yang dibangunkan oleh syarikat besar atau disediakan oleh projek sumber terbuka yang terkenal? Apr 02, 2025 pm 04:12 PM

Perpustakaan mana yang dibangunkan oleh syarikat besar atau projek sumber terbuka yang terkenal? Semasa pengaturcaraan di GO, pemaju sering menghadapi beberapa keperluan biasa, ...

See all articles