Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mengubah Suai Slice yang Diluluskan sebagai Hujah dalam Fungsi Go?

Bagaimanakah Saya Boleh Mengubah Suai Slice yang Diluluskan sebagai Hujah dalam Fungsi Go?

Barbara Streisand
Lepaskan: 2024-12-23 07:30:43
asal
1022 orang telah melayarinya

How Can I Modify a Slice Passed as an Argument in a Go Function?

Melalukan Slices sebagai Argumen dengan Pengubahsuaian Slice Asal

Melalui pembolehubah mengikut nilai dalam Go mengehadkan kesan pengubahsuaian fungsi kepada skop fungsi. Dalam kes di mana hirisan perlu diubah suai di luar fungsi, menghantar hirisan terus sebagai hujah adalah tidak mencukupi.

Gelagat Fungsi Penambahan Slice

Fungsi tambah memperuntukkan kepingan baharu dan menyalin unsur daripada kepingan sedia ada, termasuk sebarang tambahan yang dibuat dalam fungsi. Walau bagaimanapun, kepingan asal kekal tidak terjejas.

Contoh: Rekursi pada Slice Terkumpul

Coretan kod yang disediakan pada mulanya cuba mengumpul mesej pengesahan dalam kepingan yang diluluskan sebagai hujah kepada fungsi rekursif. Walau bagaimanapun, pengubahsuaian fungsi tidak ditunjukkan dalam kepingan asal.

Penyelesaian

Terdapat dua penyelesaian utama untuk isu ini:

  1. Lepaskan Penunjuk ke Slice: Dengan menghantar penuding ke hirisan asal, mana-mana pengubahsuaian yang dibuat dalam fungsi akan memberi kesan secara langsung kepada yang asal.
func myAppend(list *[]string, value string) {
    *list = append(*list, value)
}
Salin selepas log masuk
  1. Kembalikan Slice yang Diubah Suai daripada Fungsi: Daripada menghantar penumpuk, fungsi yang diulang boleh kembalikan kepingan yang diubah suai, menghapuskan keperluan untuk melepasi penumpuk pembolehubah.
func validate(obj Validatable, messages []ValidationMessage) []ValidationMessage {
    //...Processing

    return messages
}
Salin selepas log masuk

Pendekatan Idiomatik Go

Melalukan penunjuk kepada kepingan ialah pendekatan Go idiomatik apabila fungsi perlu mengubah suai kepingan asal. Seperti yang ditunjukkan dalam pendekatan kepingan kembali, ia juga mungkin untuk memintas keperluan untuk penumpuk dengan mengembalikan kepingan yang diubah suai.

Pertimbangan Prestasi

Impak prestasi lulus a penunjuk berbanding mengembalikan kepingan boleh diabaikan dalam kebanyakan senario. Walau bagaimanapun, tingkah laku yang tepat mungkin berbeza-beza bergantung pada pengoptimuman pengkompil dan penggunaan kod tertentu.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengubah Suai Slice yang Diluluskan sebagai Hujah 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