Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengubah Suai Slice Dalam Struct in Go?

Bagaimana untuk Mengubah Suai Slice Dalam Struct in Go?

Susan Sarandon
Lepaskan: 2024-11-21 06:00:14
asal
456 orang telah melayarinya

How to Modify a Slice Within a Struct in Go?

Cara Mengeluarkan Elemen daripada Slice dalam Struct

Mengalih keluar elemen daripada hirisan dalam struct memerlukan menangani beberapa pertimbangan utama.

Isu: Kekal Panjang Potongan Tidak berubah

Dalam coretan kod yang disediakan, kaedah removeFriend bertujuan untuk mengalih keluar elemen daripada kepingan rakan. Walau bagaimanapun, elemen terakhir hirisan diduplikasi dan bukannya hirisan menjadi lebih pendek. Ini berlaku kerana kaedah menggunakan penerima nilai, mengubah suai salinan struktur dan bukannya nilai asal.

Penyelesaian: Gunakan Penerima Penunjuk

Untuk memastikan bahawa perubahan dibuat dalam kaedah mempengaruhi struktur asal, penerima penunjuk harus digunakan. Ini membolehkan kaedah mengubah suai contoh struct sebenar. Sintaks untuk penerima penuding dalam Go ialah func (penerima *struct_name).

Contoh:

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

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

Penjelasan:

Dengan menggunakan penerima penunjuk (*Tetamu), kaedah removeFriend kini mengubah suai rakan kepingan struct Tetamu asal.

Penamaan Penerima Idiomatik

Adalah penting untuk ambil perhatian bahawa nama penerima seperti diri dan ini tidak biasa digunakan dalam Go. Sebaliknya, nama yang lebih khusus seperti g atau tetamu lebih disukai untuk menyampaikan maksud kaedah tersebut.

Atas ialah kandungan terperinci Bagaimana untuk Mengubah Suai 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