通常,这两个函数会给 分配不同的值b。第二个复制参数,因此a函数内部通常具有与传递给函数的任何输入不同的内存地址。请参阅此游乐场示例package maintype A struct{ x int}var b *Afunc d(a *A) { b = a}func e(a A) { b = &a}func main() { var a = A{3} println(&a) d(&a) println(b) e(a) println(b)}有趣的是,如果您将类型A改为空结构,并 initialize var a = A{},您实际上会在语句中看到相同的值。bprintln那是因为对于空结构类型,实际上只能有 1 个值,而且它是不可变的,所以它的所有实例共享相同的内存地址?