That’s a good case of dynamic type checking and good documentation

> On May 21, 2019, at 5:20 PM, roger peppe <rogpe...@gmail.com> wrote:
> 
> Probably it's not a Closer because that would imply that Close would close 
> its underlying writer too, but then it would need to take a WriteCloser which 
> would make it less general.
> 
>> On Tue, 21 May 2019, 19:02 Robert Engels, <reng...@ix.netcom.com> wrote:
>> That’s what I was saying, I incorrectly thought that the Writer was a 
>> WriterCloser.
>> 
>> Seems it should be with a noop if the contained Writer is not a 
>> WriterCloser. This would be pretty much how every other platform does 
>> buffered IO. 
>> 
>>> On May 21, 2019, at 11:19 AM, howardcs...@gmail.com wrote:
>>> 
>>> Excuse me if I am misunderstanding something - but it certainly looks to me 
>>> like you are not at any point closing the bufio.Writer (because it is not a 
>>> WriteCloser and does not support Close function). That is why you need to 
>>> flush it! What you are closing is the underlying file/stream/WriteCloser, 
>>> but it is the bufio.Writer that has the data in its buffer, *not* the file. 
>>> This is not the same thing as flushing a file descriptor, which happens on 
>>> close.
>>> 
>>> "After all data has been written, the client should call the Flush method 
>>> to guarantee all data has been forwarded to the underlying io.Writer."
>>> 
>>> IF the bufio.Writer had been implemented as a WriteCloser, then closing it 
>>> would probably flush as well - here is a discussion where they talk about 
>>> how that could be implemented: 
>>> https://stackoverflow.com/questions/43115699/how-to-get-a-bufio-writer-that-implements-io-writecloser
>>> 
>>> Howard
>>> 
>>>> On Tuesday, May 21, 2019 at 8:42:51 AM UTC-5, Subramanian Sridharan wrote:
>>>> I don't think so.
>>>> 
>>>> When I close the file and don't explicitly flush:
>>>> 
>>>> package main
>>>> 
>>>> import (
>>>>    "bufio"
>>>>    "fmt"
>>>>    "io"
>>>>    "os"
>>>> )
>>>> 
>>>> func main() {
>>>>    sourceFilename := "MozillaFirefox-66.0.5-741.4.x86_64.rpm"
>>>>    sourcef, err := os.Open(sourceFilename)
>>>>    if err != nil {
>>>>            fmt.Println("Error while opening source file:", err)
>>>>            return
>>>>    }
>>>>    defer sourcef.Close()
>>>> 
>>>>    destinationFilename := "CopiedMozillaFirefox-66.0.5-741.4.x86_64.rpm"
>>>>    os.Create(destinationFilename)
>>>>    destf, err := os.OpenFile(destinationFilename, os.O_APPEND|os.O_WRONLY, 
>>>> os.ModeAppend)
>>>>    if err != nil {
>>>>            fmt.Println("Error while opening destination file:", err)
>>>>            return
>>>>    }
>>>>    defer func() {
>>>>            fmt.Println("Closing file.")
>>>>            destf.Close()
>>>>    }()
>>>> 
>>>>    fReader := bufio.NewReader(sourcef)
>>>>    fWriter := bufio.NewWriter(destf)
>>>> 
>>>>    n, err := io.Copy(fWriter, fReader)
>>>>    if err != nil {
>>>>            fmt.Println("Error while copying:", err)
>>>>            return
>>>>    }
>>>> 
>>>>    fmt.Println("Copied", n, "bytes.")
>>>> }
>>>> 
>>>>> 
>>> 
>>> -- 
>>> 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/24d5242a-3e5a-4b83-a6f2-1ca7e29cfe0e%40googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>> 
>> -- 
>> 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/D61080CC-6271-4782-88A8-9213A5C12A95%40ix.netcom.com.
>> For more options, visit https://groups.google.com/d/optout.
> 
> -- 
> 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/CAJhgacidQJLbjQ16BBDLOQ57q5BAbqJvu1Y57-itoAV9DtPDLQ%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
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/F2380E32-37C9-4056-9E06-DC674F8832EF%40ix.netcom.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to