Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Pembina Boleh Meningkatkan Permulaan Go Struct dan Mencegah Panik Penunjuk Nil?

Bagaimanakah Pembina Boleh Meningkatkan Permulaan Go Struct dan Mencegah Panik Penunjuk Nil?

Susan Sarandon
Lepaskan: 2024-12-02 14:45:12
asal
514 orang telah melayarinya

How Can Constructors Improve Go Struct Initialization and Prevent Nil Pointer Panics?

Corak Pembina untuk Permulaan Struktur dalam Go

Apabila bekerja dengan struct Golang, memulakan ahli kadangkala agak sukar, terutamanya bagi pendatang baru. Satu isu biasa ialah menghadapi panik sifar penunjuk apabila mengakses medan yang tidak dimulakan.

Untuk menangani perkara ini, pendekatan yang popular ialah menggunakan fungsi berasingan untuk pemula. Dalam contoh anda dengan SyncMap, anda perlu mencipta fungsi Init() untuk memulakan medan hm dan kunci secara manual selepas mencipta struct menggunakan baharu.

Walau bagaimanapun, terdapat cara yang lebih elegan untuk mengendalikan pemulaan struct dalam Go : menggunakan pembina. Pembina ialah fungsi yang mengambil parameter yang diperlukan untuk mencipta contoh struct dan memulakan semua ahlinya.

Untuk contoh SyncMap anda, anda boleh mentakrifkan pembina seperti ini:

func NewSyncMap() *SyncMap {
    return &SyncMap{hm: make(map[string]string)}
}
Salin selepas log masuk

Pembina ini mencipta struktur SyncMap baharu, memulakan medan hm ke peta kosong, dan mengembalikan penunjuk ke struct.

Kini, anda hanya boleh menggunakan NewSyncMap() untuk mencipta contoh SyncMap yang dimulakan, tanpa memerlukan sebarang permulaan manual:

sm := NewSyncMap()
sm.Put("Test", "Test")
Salin selepas log masuk

Corak pembina ini boleh dilanjutkan untuk mengendalikan lebih kompleks senario permulaan, seperti memulakan goroutin latar belakang atau mendaftar pemuktamad:

func NewSyncMap() *SyncMap {
    sm := SyncMap{
        hm: make(map[string]string),
        foo: "Bar",
    }

    runtime.SetFinalizer(sm, (*SyncMap).stop)

    go sm.backend()

    return &sm
}
Salin selepas log masuk

Dengan menggunakan pembina, anda boleh memastikan bahawa struct Go anda sentiasa dimulakan dengan betul dan sedia untuk digunakan, tanpa memerlukan kod boilerplate tambahan atau risiko menghadapi panik sifar penunjuk.

Atas ialah kandungan terperinci Bagaimanakah Pembina Boleh Meningkatkan Permulaan Go Struct dan Mencegah Panik Penunjuk Nil?. 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