100-go-mistakes/07-error-management/54-defer-errors/main.go
2021-12-27 15:57:20 +01:00

50 lines
831 B
Go

package main
import (
"database/sql"
"log"
)
const query = "..."
func getBalance1(db *sql.DB, clientID string) (float32, error) {
rows, err := db.Query(query, clientID)
if err != nil {
return 0, err
}
defer rows.Close()
// Use rows
return 0, nil
}
func getBalance2(db *sql.DB, clientID string) (float32, error) {
rows, err := db.Query(query, clientID)
if err != nil {
return 0, err
}
defer func() { _ = rows.Close() }()
// Use rows
return 0, nil
}
func getBalance3(db *sql.DB, clientID string) (balance float32, err error) {
rows, err := db.Query(query, clientID)
if err != nil {
return 0, err
}
defer func() {
closeErr := rows.Close()
if err != nil {
if closeErr != nil {
log.Printf("failed to close rows: %v", err)
}
return
}
err = closeErr
}()
// Use rows
return 0, nil
}