github.com/elliott5/community@v0.14.1-0.20160709191136-823126fb026a/wordsmith/utility/defclose.go (about) 1 // Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved. 2 // 3 // This software (Documize Community Edition) is licensed under 4 // GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html 5 // 6 // You can operate outside the AGPL restrictions by purchasing 7 // Documize Enterprise Edition and obtaining a commercial license 8 // by contacting <sales@documize.com>. 9 // 10 // https://documize.com 11 12 package utility 13 14 import "io" 15 import "github.com/documize/community/wordsmith/log" 16 17 // Close is a convenience function to close an io.Closer, usually in a defer. 18 func Close(f interface{}) { 19 if f != nil { 20 if ff, ok := f.(io.Closer); ok { 21 if ff != io.Closer(nil) { 22 log.IfErr(ff.Close()) 23 } 24 } 25 } 26 }