在 golang 里面,type 可以类比面向对象语言里面 类;该 类型 的变量可以类比面向对象语言的 对象。

main 中的 a 就是你实例化的对象;foo 中的 a 就相当于 this(即当前对象),你可以想象一个场景:如果你想在 foo 中使用 Name 怎么办?

  1. foo 里面的 a 相当于是 main 里面的 a 的(但 如果类型 A 在其他包中定义,main 里面的 a 是访问不到私有成员的)
  2. 你可以类比面向对象里面的 this。如果你不用不到 a 的话,完全可以不写

你还不理解的话继续在下面评论里面追问吧,我这里可能描述的不好,因为我暂时没想好怎么描述