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
Patricia Arquetteasal
2024-12-08 11:02:11441semak imbas

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
}

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

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

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

sm := NewSyncMap()
sm.Put("Test", "Test")

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
}

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!

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