Just to clarify, the statement " Close will return an error if it has already been called" on os.File.Close <https://pkg.go.dev/os#File.Close> is explicitly not the behavior guaranteed by io.Closer <https://pkg.go.dev/io#Closer>, which specifically states: " The behavior of Close after the first call is undefined. Specific implementations may document their own behavior."
My understanding is that this is the result of a historical oversight, but can not be changed now. On Tuesday, August 10, 2021 at 2:46:12 AM UTC-4 Brian Candler wrote: > It's for file-like objects that should be closed when they're no longer > being used, in order to reclaim resources promptly. The details depend on > the underlying type, but see for example os.File.Close > <https://pkg.go.dev/os#File.Close>: > > "Close closes the File, rendering it unusable for I/O. On files that > support SetDeadline, any pending I/O operations will be canceled and return > immediately with an error. Close will return an error if it has already > been called." > > On Tuesday, 10 August 2021 at 02:13:30 UTC+1 i...@iangudger.com wrote: > >> io.Closer simply says "Closer is the interface that wraps the basic Close >> method," but does not document its Close method. >> >> Effective Go says: >> "There are a number of such names and it's productive to honor them and >> the function names they capture. Read, Write, Close, Flush, String and so >> on have canonical signatures and meanings. To avoid confusion, don't give >> your method one of those names unless it has the same signature and >> meaning." (https://golang.org/doc/effective_go#interface-names) >> ...but does not elaborate on what the canonical meanings are. >> >> So what is the canonical meaning of a Close method? >> > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/97072cbf-1b98-474b-8484-4e0546f1d8a0n%40googlegroups.com.