The following program might print:
31
> 37
> 47
> 47
> 37
> 31
>
or
31
> 37
> 47
> 47
>
but with the highest possibility to print
31
> 37
> 47
>
Is not normal?
package main
import (
"fmt"
"math/rand"
"runtime"
"time"
"unsafe"
)
type Foo struct {
x int
a int
}
func main() {
for i := 0; i < 3; i++ {
f := NewFoo(i)
println(f.a)
}
runtime.GC()
time.After(time.Second)
}
func do(i *uint) {
runtime.SetFinalizer(i, func(f *uint) {
fmt.Println(*f)
})
}
//go:noinline
func NewFoo(i int) *Foo {
f := &Foo{a: rand.Intn(50)}
do((*uint)(unsafe.Pointer(&f.a)))
return f
}
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/golang-nuts/db59b870-b9c7-4411-a461-5857eb7017e2%40googlegroups.com.