Bagaimanakah penunjuk mempengaruhi pengubahsuaian nilai dalam fungsi Go?

Linda Hamilton
Lepaskan: 2024-10-27 02:32:02
asal
566 orang telah melayarinya

How do pointers affect value modification in Go functions?

Memahami Pengubahsuaian Nilai dengan Penunjuk dalam Go

Dalam Go, penunjuk membenarkan akses tidak langsung dan pengubahsuaian nilai. Walau bagaimanapun, memahami cara penunjuk berfungsi adalah penting apabila menghantarnya ke fungsi.

Apabila menghantar penuding kepada fungsi, dua senario timbul: pengubahsuaian nilai berbanding penugasan semula penuding.

Senario 1 : Pengubahsuaian Nilai

Pertimbangkan kod ini:

<code class="go">type Test struct { Value int }

func main() {
   var i Test = Test {2}
   var p *Test = &amp;i
   f(p)
   println(i.Value)  // 4
}
func f(p *Test) {
   *p = Test{4}
}</code>
Salin selepas log masuk

Di sini, fungsi f menerima penunjuk kepada struct Ujian. Di dalam f, penuding dinyahrujuk (*p) diberikan struct Ujian baharu dengan nilai 4. Ini mengubah suai struct asal asal dalam fungsi utama dan outputnya ialah 4.

Senario 2: Penugasan Semula Penunjuk

Sekarang, mari kita ubah sedikit kod:

<code class="go">type Test struct { Value int }

func main() {
   var i Test = Test {2}
   var p *Test = &amp;i
   f(p)
   println(i.Value)  // 2
}
func f(p *Test) {
   // ?
   p = &amp;Test{4}
}</code>
Salin selepas log masuk

Dalam kes ini, daripada mengubah suai nilai yang ditunjuk, fungsi menetapkan semula penunjuk p kepada yang baharu Uji struct dengan nilai 4. Memandangkan p ialah pembolehubah tempatan dalam f, perubahan ini tidak menjejaskan struct i asal dalam fungsi utama, dan output kekal 2.

Penyelesaian: Ubah Suai Bertitik Value

Untuk mengubah suai nilai yang ditunjuk, kita mesti menyahrujuk penuding dan terus mengakses ahli struct:

<code class="go">type Test struct { Value int }

func main() {
   var i Test = Test {2}
   var p *Test = &amp;i
   f(p)
   println(i.Value)  // 4
}
func f(p *Test) {
   p.Value = 4
}</code>
Salin selepas log masuk

Dengan menggunakan p.Value, kami mengubah suai medan Nilai struct asal , menghasilkan output 4.

Atas ialah kandungan terperinci Bagaimanakah penunjuk mempengaruhi pengubahsuaian nilai dalam fungsi Go?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!