>From the doc: "The finalizer for obj is scheduled to run at some arbitrary 
time after obj becomes unreachable. There is no guarantee that finalizers 
will run before a program exits, so typically they are useful only for 
releasing non-memory resources associated with an object during a 
long-running program."

On Saturday, January 28, 2017 at 6:17:37 AM UTC-7, T L wrote:
>
>
>
> package main
>
> import "time"
> import "runtime"
>
> type T1 struct{ i int }
> type T2 struct{ i int }
>
> func main() {
>         t1 := new(T1)
>         t2 := new(T2)
>         
>         runtime.SetFinalizer(t1, func(*T1) {println(1)})
>         runtime.SetFinalizer(t2, func(*T2) {println(2)})
>         runtime.GC()
>         time.Sleep(time.Second * 2)
>         
>         // the program will output: 2
>         // if I adjust the order of the declarations of t1 and t2,
>         // the program will output: 1
> }
>
> Why the finalizer for the first declaration will not get called?
>

-- 
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