延迟处理错误

I have a function which open db connection and return it. Or error, if something happened:

OpenDbConnection(connectionString string, logSql bool) (*gorm.DB, error) 

In this function I am using logger:

logger := zap.NewExample().Sugar()
defer logger.Sync()

Method Sync() returns error and I am ignoring this error.

What is the best strategy in this case ?

I can rewrite my code to avoid linter error, but I am still ignore error:

logger := zap.NewExample().Sugar()
defer func() {
    _ = logger.Sync()
}()

I can return error, but I am have correct db connection and I need to analyze this error in the calling function to understand what to do.

You can name your returning error variable and initialize anywhere inside the function.

check this test code here

OpenDbConnection(connectionString string, logSql bool) (db *gorm.DB, err error) {

    logger := zap.NewExample().Sugar()
    defer func() {
        err = logger.Sync()
    }()

    // some logic here

    return db, err

}