Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Mekanisme Nilai Laluan Go Meniru Rujukan Laluan Menggunakan Penunjuk?

Bagaimanakah Mekanisme Nilai Laluan Go Meniru Rujukan Laluan Menggunakan Penunjuk?

Barbara Streisand
Lepaskan: 2024-12-19 07:29:19
asal
274 orang telah melayarinya

How Does Go's Pass-by-Value Mechanism Mimic Pass-by-Reference Using Pointers?

Memahami Lulus Melalui Rujukan dan Nilai dalam Fungsi Go

Dalam Go, konsep lulus melalui rujukan dan nilai boleh mengelirukan pada mulanya. Untuk menjelaskannya, perlu diperhatikan bahawa Go terutamanya menyokong nilai lulus. Walau bagaimanapun, apabila menghantar penuding kepada objek, ia meniru melalui rujukan.

Untuk memahami perkara ini, pertimbangkan fungsi Java berikut:

databaseFunction(DatabaseType db) {
  // do something
}
Salin selepas log masuk

Dalam kod ini, contoh DatabaseType db ialah dihantar ke fungsi dengan nilai. Walau bagaimanapun, dalam Go, ia mungkin diwakili sebagai:

func PutTasks(db *sql.DB) echo.HandlerFunc {

}
Salin selepas log masuk

Dalam contoh Go, asterisk * sebelum sql.DB membayangkan bahawa fungsi tersebut menjangkakan penunjuk kepada contoh sql.DB. Ini kerana dalam Go, nilai jenis penuding memegang alamat.

Menurut helaian tipu yang anda nyatakan, fungsi sintaks PrintPerson(p *Orang) menunjukkan bahawa fungsi itu hanya menerima alamat penuding kepada objek Orang. Sebab untuk menggunakan penuding di sini adalah untuk membolehkan fungsi mengubah suai objek asal yang dihantar masuk.

Untuk menunjukkan lebih lanjut, pertimbangkan kod Go berikut:

func someFunc(x *int) {
  *x = 2 // Whatever variable caller passed in will now be 2
  y := 7
  x = &y // has no impact on the caller because we overwrote the pointer value!
}
Salin selepas log masuk

Dalam contoh ini , x ialah penunjuk kepada integer. Dengan membatalkan rujukannya, kami boleh mengubah suai secara langsung nilai yang ditunjukkannya. Walau bagaimanapun, menetapkan semula x untuk menunjuk kepada pembolehubah yang berbeza tidak memberi kesan kepada pemanggil kerana mereka hanya mempunyai salinan pembolehubah penunjuk, bukan nilai yang ditunjuk pada asalnya.

Oleh itu, menggunakan penunjuk menyediakan mekanisme untuk berkongsi nilai antara pemanggil dan fungsi, membenarkan perubahan yang dibuat dalam fungsi dipantulkan kembali kepada objek asal.

Atas ialah kandungan terperinci Bagaimanakah Mekanisme Nilai Laluan Go Meniru Rujukan Laluan Menggunakan Penunjuk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan