Rumah >pembangunan bahagian belakang >Golang >Pengubah suai '*' Go: Nilai Laluan atau Rujukan Laluan?

Pengubah suai '*' Go: Nilai Laluan atau Rujukan Laluan?

Barbara Streisand
Barbara Streisandasal
2024-12-27 00:53:09221semak imbas

Go's

Melalui Rujukan dan Nilai dalam Go: Memahami Pengubahsuai "*"

Menyalurkan data ke dan dari fungsi ialah aspek asas pengaturcaraan . Dalam Go, terdapat dua cara utama untuk melakukan ini: lulus mengikut nilai atau lulus dengan rujukan. Yang terakhir melibatkan penggunaan pengubah suai "*", yang boleh mengelirukan untuk pemula.

Di Jawa, menghantar objek melalui rujukan adalah mudah, kerana objek secara semula jadi diluluskan sebagai rujukan. Walau bagaimanapun, dalam Go, yang membenarkan kedua-dua nilai lulus dan rujukan berlalu, menggunakan penunjuk boleh menjadi lebih cekap.

"" menandakan penunjuk kepada jenis. Contohnya, func PutTasks(db sql.DB) menunjukkan bahawa parameter db ialah penunjuk kepada objek sql.DB. Sebabnya ialah Go secara teknikal hanya menyokong nilai pas-demi-nilai dan menghantar penuding ialah cara untuk mensimulasikan rujukan pas-demi.

Apabila anda melepasi penunjuk, anda menghantar nilai (nilai penunjuk itu sendiri) yang menunjuk kepada objek sebenar dalam ingatan. Ini bermakna bahawa perubahan yang dibuat pada objek melalui penunjuk akan dicerminkan dalam pembolehubah asal yang dihantar ke fungsi. Sebaliknya, menghantar nilai secara terus (tanpa "*") membuat salinan nilai asal, jadi perubahan yang dibuat dalam fungsi tidak akan menjejaskan pembolehubah asal.

Contoh yang disediakan, func PrintPerson( p *Orang), memerlukan penunjuk kerana ia perlu mengubah suai objek Orang untuk mencetak butirannya. Jika ia menerima nilai sebaliknya, sebarang perubahan hanya akan menjejaskan salinan yang dipegang dalam fungsi tersebut.

Memahami rujukan pas-demi dan nilai pas-demi adalah penting untuk penulisan kod yang berkesan dalam Go. Menggunakan penunjuk apabila sesuai boleh meningkatkan prestasi dan mengekalkan konsistensi antara fungsi dan kod pemanggil.

Atas ialah kandungan terperinci Pengubah suai '*' Go: Nilai Laluan atau Rujukan Laluan?. 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