秋刀鱼的味道 2016-11-21 03:27 采纳率: 40.7%
浏览 1758
已采纳

go语言结构体作为方法的参数的这两种写法都可以吗?有什么区别,感觉go语言太变态了

1.
type NokiaPhone struct {
}

func (nokiaPhone NokiaPhone) call() {
fmt.Println("I am Nokia, I can call you!")
}
2.type Books struct{

}
func printBook( book Books ) {
fmt.Println("。。。。。。")
}

  • 写回答

1条回答 默认 最新

  • 不得闲 2016-11-21 04:25
    关注

    第一个实际上是一个模拟的面向对象的写法,也就是说,而已使用nokiaphone.Call()这种方式的语法糖来进行调用
    第二个则不能,只能使用printBook(book)这种方法调用,但是实际上他们传递的参数的堆栈结构是一样的。具体,可以看Reflect反射包中的Invoke可明一二

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 代码的修改,添加和运行完善
  • ¥15 krpano-场景分组和自定义地图分组
  • ¥15 lammps Gpu加速出错
  • ¥15 关于PLUS模型中kapaa值的问题
  • ¥15 关于博途V17进行仿真时无法建立连接问题
  • ¥15 机器学习教材中的例题询问
  • ¥15 求.net core 几款免费的pdf编辑器
  • ¥15 为什么安装HCL 和virtualbox之后没有找到VirtualBoxHost-OnlyNetWork?
  • ¥15 C# P/Invoke的效率问题
  • ¥20 thinkphp适配人大金仓问题