Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mengubah Suai Secara Berkesan Slice yang Diluluskan sebagai Argumen dalam Go?

Bagaimanakah Saya Boleh Mengubah Suai Secara Berkesan Slice yang Diluluskan sebagai Argumen dalam Go?

Patricia Arquette
Lepaskan: 2024-12-30 18:06:19
asal
162 orang telah melayarinya

How Can I Effectively Modify Slices Passed as Arguments in Go?

Lulus Slices dengan Berkesan dalam Go: Elakkan Had Nilai Lulus

Dalam Go, menghantar kepingan sebagai hujah fungsi pada asasnya dilakukan mengikut nilai. Ini menunjukkan bahawa jika kepingan argumen diubah suai dalam fungsi menggunakan append, ia tidak akan menjejaskan kepingan asal di luar skop fungsi.

Untuk menggambarkan pengehadan ini, pertimbangkan contoh berikut:

nums := []int{1, 2, 3}

func addToNumbs(nums []int) []int {
    nums = append(nums, 4)
    fmt.Println(nums) // []int{1, 2, 3, 4}
}

fmt.Println(nums) // []int{1, 2, 3}
Salin selepas log masuk

Dalam contoh ini, nombor kepingan asal kekal tidak terjejas walaupun terdapat pengubahsuaian dalam fungsi addToNumbs. Untuk menyelesaikan isu ini, seseorang boleh menghantar penuding kepada kepingan sebaliknya:

func myAppend(list *[]string, value string) {
    *list = append(*list, value)
}
Salin selepas log masuk

Pendekatan ini memastikan bahawa kepingan asal diubah suai secara langsung.

Sebagai alternatif, dalam senario tertentu, hanya mengembalikan kepingan yang diubah suai daripada fungsi boleh menjadi penyelesaian yang cekap:

func validate(obj Validatable, messages []ValidationMessage) ([]ValidationMessage, error) {
    // Modification...
    return messages, nil
}
Salin selepas log masuk

Ringkasnya, apabila menghantar kepingan sebagai hujah dalam Go, adalah penting untuk mempertimbangkan sama ada pengubahsuaian dalam fungsi harus memberi kesan kepada kepingan asal. Jika ya, menggunakan penuding pada kepingan atau mengembalikan kepingan yang diubah suai merupakan pendekatan yang berkesan untuk mencapai tingkah laku yang diingini.

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