Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk mengalih keluar Elemen daripada Slice dalam Struct in Go?

Bagaimana untuk mengalih keluar Elemen daripada Slice dalam Struct in Go?

Patricia Arquette
Lepaskan: 2024-11-14 16:29:02
asal
537 orang telah melayarinya

How to Remove Elements from a Slice Within a Struct in Go?

Mengalih keluar Elemen daripada Slice dalam Struct

In Go, struct ialah agregat medan, yang boleh termasuk kepingan. Apabila kaedah cuba mengubah suai penerima (iaitu, struktur itu sendiri), ia mesti menggunakan penerima penuding untuk mengemas kini nilai asal dan bukannya membuat salinan.

Pertimbangkan kod berikut:

type Guest struct {
    id      int
    name    string
    surname string
    friends []int
}

func (self Guest) removeFriend(id int) {
    for i, other := range self.friends {
        if other == id {
            self.friends = append(self.friends[:i], self.friends[i+1:]...)
            break
        }
    }
}
Salin selepas log masuk

Kod ini mengalih keluar elemen daripada kepingan "rakan" dalam struct "Tetamu". Walau bagaimanapun, cubaan untuk mengalih keluar elemen daripada struct asal mengakibatkan menimpa elemen yang diingini dan mendarabkan elemen terakhir, seperti yang dilihat dalam contoh:

guest1.friends = [1, 2, 3, 4, 5]
guest1.removeFriend(3)
// Result: guest1.friends = [1, 2, 4, 5, 5]
Salin selepas log masuk

Untuk membetulkan isu ini, anda mesti menggunakan penerima penuding:

func (self *Guest) removeFriend(id int) {
    // ... (Same implementation)
}
Salin selepas log masuk

Dengan menggunakan penerima penuding, anda menetapkan nilai kepingan baharu (dipulangkan dengan "tambah()") kepada medan "rakan" bagi struct asal "Tetamu", mengurangkan panjang hirisan sebanyak 1 dengan berkesan.

Selain itu, disyorkan untuk menggunakan nama penerima yang lebih idiomatik, seperti "tetamu" atau "g," dan bukannya "diri sendiri."

Atas ialah kandungan terperinci Bagaimana untuk mengalih keluar Elemen daripada Slice dalam Struct in 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