Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Pembina Boleh Memudahkan Permulaan Go Struct dan Mengelakkan Panik Penunjuk Tiada?

Bagaimanakah Pembina Boleh Memudahkan Permulaan Go Struct dan Mengelakkan Panik Penunjuk Tiada?

Patricia Arquette
Lepaskan: 2024-12-08 11:02:11
asal
455 orang telah melayarinya

How Can Constructors Simplify Go Struct Initialization and Avoid Nil Pointer Panics?

Pembina untuk Memulakan Ahli Go Struct

Pembangun baharu Go sering menghadapi cabaran pemulaan dengan struct. Pertimbangkan perkara berikut:

import "sync"

type SyncMap struct {
        lock *sync.RWMutex
        hm map[string]string
}
Salin selepas log masuk

Memajukan struct ini dengan sm := new(SyncMap) malangnya menghasilkan panik kerana penunjuk nil.

Mengatasi Penunjuk Nil dengan Fungsi Pembantu

Untuk mengelakkan panik, pendekatan alternatif adalah menggunakan fungsi untuk pemula:

func (m *SyncMap) Init() {
        m.hm = make(map[string]string)
        m.lock = new(sync.RWMutex)
}
Salin selepas log masuk

Selepas membuat instantiat struct, seseorang mesti memanggil Init secara manual. Ini memperkenalkan kod boilerplate.

Memperkenalkan Pembina untuk Memudahkan Permulaan

Penyelesaian yang lebih elegan ialah menggunakan fungsi pembina. Pertimbangkan contoh ini:

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

Fungsi ini memulakan ahli struct yang diperlukan dan mengembalikan penunjuk kepada struct yang dimulakan. Penggunaannya adalah mudah:

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

Pembina Dipertingkat untuk Struktur Kompleks

Untuk struct dengan lebih ramai ahli, pembina boleh dilanjutkan untuk mengendalikan tugas permulaan tambahan, seperti memulakan goroutin 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 memanfaatkan pembina, pembangun Go boleh memudahkan pemulaan struct, menghapuskan kod boilerplate dan meningkatkan kebolehselenggaraan dan kebolehbacaan pangkalan kod mereka.

Atas ialah kandungan terperinci Bagaimanakah Pembina Boleh Memudahkan Permulaan Go Struct dan Mengelakkan Panik Penunjuk Tiada?. 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