Rumah >pembangunan bahagian belakang >Golang >Adakah Pembolehubah Go Ditimpa Kerana Salah Faham Slice?

Adakah Pembolehubah Go Ditimpa Kerana Salah Faham Slice?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-24 08:09:02840semak imbas

Are Go Variables Being Overwritten Due to Slice Misunderstanding?

Go Pembolehubah Sedang Ditulis Ganti (Pepijat?)

Dalam keadaan ini, isunya terletak pada memahami cara kepingan berfungsi dalam Go. Sekeping terdiri daripada penuding kepada tatasusunan, bersama-sama dengan panjang dan kapasitinya. Apabila menambahkan elemen pada kepingan, ia mula-mula menyemak sama ada memanjangkan kepingan akan melebihi kapasiti tatasusunan asasnya. Jika ya, tatasusunan yang lebih besar diperuntukkan, elemen sedia ada disalin kepadanya, dan kapasiti dikemas kini. Kemudian, elemen baharu ditambahkan pada penghujung tatasusunan dan panjangnya dikemas kini.

Dalam kod anda, anda mempunyai baris berikut:

<code class="go">pathA := append(route, nextA)
pathB := append(route, nextB)</code>

Terdapat dua kemungkinan di sini :

  1. Jika len(route) sama dengan cap(route), tatasusunan sandaran baharu akan diperuntukkan dan pathA dan pathB akan mempunyai nilai yang berbeza.
  2. Jika len(route) ialah kurang daripada cap(laluan), laluanA dan laluanB akhirnya akan berkongsi tatasusunan sokongan yang sama. Elemen terakhir dalam tatasusunan ialah nextB, kerana ia dilaksanakan kedua.

Nampaknya kes pertama adalah benar untuk lelaran gelung awal, selepas itu kes kedua berlaku. Isu ini boleh diselesaikan dengan membuat salinan secara manual untuk salah satu laluan ini menggunakan copy() dan make().

Atas ialah kandungan terperinci Adakah Pembolehubah Go Ditimpa Kerana Salah Faham Slice?. 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
Artikel sebelumnya:ekspres-pergiArtikel seterusnya:ekspres-pergi