On Sunday, October 16, 2016 at 2:20:59 AM UTC-4, Tamás Gulácsi wrote:
>
> Please check your errors if you depend on the call's success! I.e. if you 
> write into a file, f.Close must be successful, or else maybe it doesn't 
> flush at all, and your file will be empty.


That's a good point, still not the true cause -- checking them will be a 
good practice, but will not solve the problem here, because the exact same 
code works in 
https://github.com/suntong/lang/blob/master/lang/Go/src/ds/PersistentData-GOB.go.
 
I've verify from the code and result that the save *is* actually working. 

Please take a look at PersistentData-GOB.go 
<https://github.com/suntong/lang/blob/master/lang/Go/src/ds/PersistentData-GOB.go>,
 
I assure you it is working. FYC, here is the excerpt:

func main() {
 test0()
 test22()
 test1()
 test2()
 test22()
 test22C()
}
...


 func test22C() {
 data := &Data{}
 RestoreState("data.gob", &data)
 defer SaveState("data.gob", &data)

 fmt.Printf("%#v\nSave it!\n", data)
 //time.Sleep(5 * time.Second)


 data = &Data{
 ID:      "226622",
 Payload: []byte("foobar"),
 Created: time.Now().Unix(),
 }
}


If you have run it, you'd know it is working. 
If you have looked at the code, you'd know that the error checking has been 
done, in "test2()". 

The reason that I didn't do it, is because I don't know how to do it. In 
essence, that "f.Close()" that you worried about is wrapped in "defer 
f.Close()" in SaveState, which in turn wrapped in "defer SaveState" in a 
function. I.e., all is happening during the program tear-down phase. If we 
are not planting a "log.Fatal(err)" bomb in SaveState itself, how do you 
think we should check it properly? 

Thanks

-- 
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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to