github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/iox/close.go (about) 1 package iox 2 3 import ( 4 "io" 5 "log" 6 ) 7 8 // Close closes the io.Closer and log print if error occurs. 9 func Close(cc ...io.Closer) { 10 for _, c := range cc { 11 if c == nil { 12 continue 13 } 14 15 if err := c.Close(); err != nil { 16 log.Printf("close failed: %v", err) 17 } 18 } 19 } 20 21 // CloseAny closes any and log print if error occurs. 22 func CloseAny(cc ...interface{}) { 23 for _, c := range cc { 24 if c == nil { 25 continue 26 } 27 28 if cl, ok := c.(io.Closer); ok { 29 if err := cl.Close(); err != nil { 30 log.Printf("close failed: %v", err) 31 } 32 continue 33 } 34 35 if cl, ok := c.(interface{ Close() }); ok { 36 cl.Close() 37 continue 38 } 39 } 40 }