返回介绍

调用

发布于 2024-10-12 12:51:51 字数 1035 浏览 0 评论 0 收藏 0

给定函数类型为 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文