


Nilai kaedah fungsi Golang dan kaedah pelaksanaan 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()) }
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 Area
nya, 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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











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 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;

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.

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.

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, ...

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.

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 projek sumber terbuka yang terkenal? Semasa pengaturcaraan di GO, pemaju sering menghadapi beberapa keperluan biasa, ...
