golang中struct{}的指针让我困扰的是什么

sha*_*yao 6 struct go

如果我注释了 fmt.Printf 代码,输出将为 false。但如果取消这两行代码的注释,那就是真的。

为什么?fmt.Printf 可以工作吗?

这是代码:

package main

import "fmt"

func main() {
    type s struct{}
    s1 := new(s)
    s2 := new(s)
    // fmt.Printf("%p\n", s1)
    // fmt.Printf("%p\n", s2)
    fmt.Println(s1 == s2)
}
Run Code Online (Sandbox Code Playgroud)

我知道所有 struct{} 实例都有相同的 addr,所以它应该始终为真。