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)} }
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")
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 }
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!