İçeriğe geç

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.

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

Kapatılabilir alanları olan struct’a, onları serbest bırakan bir Close metodu ekleyin.