I'm very curious about the answer to this unanswered StackOverflow
question:
http://stackoverflow.com/questions/41357948/what-golang-compiler-will-do-when-fmt-println
import (
"fmt")
type shout interface {
echo()}
type a struct {}
func (*a) echo () {
fmt.Println("a")}
type b struct {}
func (*b) echo () {
fmt.Println("b")}
func compare(a, b shout) {
//fmt.Println(&a, &b)
if a == b {
fmt.Println("same")
} else {
fmt.Println("not same")
}}
func main() {
a1 := &a{}
b1 := &b{}
a2 := &a{}
a1.echo()
b1.echo()
compare(a1, b1)
compare(a1, a2)
compare(a1, a1) }
The output is different if a fmt.Println is commented or not.
Commented:
not samenot same
same
Not commented:
0x1040a120 0x1040a128not same0x1040a140 0x1040a148
same0x1040a158 0x1040a160
same
To me, it seems a compiler bug, or some undefined behaviour.
Can someone help me understand?
Thank you.
--
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].
For more options, visit https://groups.google.com/d/optout.