Rumah >pembangunan bahagian belakang >Golang >Bolehkah Kaedah Penunjuk Go Struct Menetapkan Semula Penunjuk kepada Kejadian Berbeza?

Bolehkah Kaedah Penunjuk Go Struct Menetapkan Semula Penunjuk kepada Kejadian Berbeza?

Patricia Arquette
Patricia Arquetteasal
2024-12-21 02:25:10661semak imbas

Can Go Struct Pointer Methods Reassign Pointers to Different Instances?

Bolehkah Penunjuk dalam Kaedah Penunjuk Struct Ditugaskan Semula kepada Kejadian Lain?

Memahami Penunjuk dalam Go

Penunjuk dalam Go, seperti integer, ialah nilai yang ditafsirkan sebagai alamat memori. Untuk mengubah suai pembolehubah jenis int, penuding kepada penuding itu (int) dihantar dan objek yang ditunjuk (*i) kemudiannya diberikan nilai baharu.

Mengubah suai Penunjuk dalam Kaedah Penunjuk Struktur

Walau bagaimanapun, kaedah penerima struct tidak boleh menjadi penunjuk kepada penunjuk (*T) untuk jenis penerima. Sebaliknya, terdapat dua pilihan:

  • Pilihan 1: Fungsi Bukan Kaedah

Tentukan fungsi bukan kaedah yang mengambil **T penunjuk dan ubah suai objek runcing.

  • Pilihan 2: Kembalikan yang Diubah Suai Penunjuk

Kembalikan penuding yang diubah suai daripada kaedah dan minta pemanggil menetapkannya kepada pembolehubah yang mengandungi penuding pepohon.

Mengatasi Kebimbangan

Mengembalikan penunjuk yang diubah suai daripada kaedah adalah amalan biasa dalam Go. Sebagai contoh, fungsi append() kedua-duanya menambahkan elemen pada kepingan dan mengembalikan kepingan yang diubah suai, yang mesti diberikan oleh pemanggil.

Kod Contoh

Menggunakan Pilihan 1, penyelesaian untuk memutarkan pokok dibiarkan ke akarnya akan be:

func rotateLeftToRoot(ptree **AvlTree) {
    tree := *ptree
    if tree == nil {
        return
    }
    prevLeft := tree.left
    if prevLeft != nil {
        tree.left = prevLeft.right
        prevLeft.right = tree
        tree = prevLeft
    }
    *ptree = tree
}

Kesimpulan

Walaupun tidak disyorkan untuk menetapkan semula penunjuk dalam kaedah penunjuk struct dalam Go, kedua-dua pilihan yang digariskan di atas menyediakan alternatif untuk mengubah suai struktur pokok. Mengembalikan penuding yang diubah suai dan meminta pemanggil menetapkannya ialah pendekatan biasa dan berkesan dalam pengaturcaraan Go.

Atas ialah kandungan terperinci Bolehkah Kaedah Penunjuk Go Struct Menetapkan Semula Penunjuk kepada Kejadian Berbeza?. 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