Kapatma Deseni (ARCH5082)
Anahtar go.performance.dispose-pattern · Önem warning · Kategori performance
Kapatılabilir bir alan tutan bir struct, kendi Close metodunu sunmazsa sahip olduğu kaynaklar hiç serbest bırakılamaz. Sahiplik zincirini bir Close ile dışa açın.
Hatalı
Bölüm başlığı “Hatalı”type Repo struct { db *sql.DB}
func NewRepo(dsn string) (*Repo, error) { db, err := sql.Open("postgres", dsn) return &Repo{db: db}, err}type Repo struct { db *sql.DB}
func NewRepo(dsn string) (*Repo, error) { db, err := sql.Open("postgres", dsn) return &Repo{db: db}, err}
func (r *Repo) Close() error { return r.db.Close()}Düzeltme
Bölüm başlığı “Düzeltme”Kapatılabilir alanları olan struct’a, onları serbest bırakan bir Close metodu ekleyin.