文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
调用
给定函数类型为 F 的表达式 f:
f(a1, a2, … an)
可以使用 a1,a2...an 来调用函数 f。除一种特殊情况之外,函数参数必须是对应 F 函数参数类型的单值表达式,且在函数调用前就已经完成求值。表达式的结果类型是 f 的结果类型。函数调用和方法调用相似,只是方法额外需要一个接收者类型。
math.Atan2(x, y) // function call
var pt *Point
pt.Scale(3.5) // method call with receiver pt
在函数调用中,函数的值和参数是按照顺序求值的。在计算之后作为参数会传进函数,函数开始执行。当函数执行完成后返回的参数将会返回给函数的调用者。
调用值为 nil 的函数会导致运行时恐慌。
作为特例,如果函数或者方法的返回值等于参数列表的个数,那么会嵌套调用。这将把返回值直接赋值给下一次调用函数的参数。
func Split(s string, pos int) (string, string) {
return s[0:pos], s[pos:]
}
func Join(s, t string) string {
return s + t
}
if Join(Split(value, len(value)/2)) != value {
log.Panic("test fails")
}
如果 x 的方法集中包含 m 那么 x.m()
是合法的。并且参数列表和 m 的参数列表相同。如果 x 是可寻址的,那么那么 x 指针的方法集 (&x).m()
可以简写成 x.m()
。
var p Point
p.Scale(3.5)
没有方法类型,也没有方法字面值。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论