- 介绍
- 标记
- 源码表示法
- 词汇元素
- 常量
- 变量
- 类型
- 方法集
- 布尔类型
- 数字类型
- 字符串类型
- 数组类型
- 切片类型
- 结构体类型
- 指针类型
- 函数类型
- 接口类型
- Map 类型
- Channel 类型
- 类型的属性和值
- 代码块
- 声明和作用域
- 标签的作用域
- Iota
- 类型声明
- 变量声明
- 短变量声明
- 函数声明
- 方法声明
- 表达式
- 语句
- switch 语句
- for 语句
- Go 语句
- select 语句
- return 语句
- break 语句
- continue 语句
- goto 语句
- Fallthrough 语句
- Defer 语句
- 内置函数
- Close
- 长度和容积
- 内存分配
- 创建切片、map 和 管道
- 追加或者拷贝切片
- 删除 map 中的元素
- 操作复数
- 处理 panic
- 初始化
- 程序的初始化和执行
- 系统相关
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
方法声明
方法是一个带接收者的函数,方法声明为方法绑定标识符作为方法名并指定方法对应的接收者类型。
MethodDecl = "func" Receiver MethodName Signature [ FunctionBody ] .
Receiver = Parameters .
接收者通过在方法增加一个额外的参数来指定。这个参数必须是一个非可变参数。它的类型必须是 T 或者 T 的指针(可能包含括号)。T 被称作接收者的基础类型;它不能是指针或接口类型,并且只能在同一个包中定义方法。声明后,我们认为方法绑定了基础类型,并且可以通过 T 或 *T 选择器访问方法名。
非空的接收者标识符在方法签名中必须是唯一的。如果接收者的值没有在该方法中使用,那么接收者标识符可以省略。函数和方法的参数也是一样。
对于一个基础类型。绑定的非空的方法名必须是唯一的。如果基础类型是一个结构体,非空的方法名也不能与结构体字段重复。
给定一个 Point
类型。声明:
func (p *Point) Length() float64 {
return math.Sqrt(p.x * p.x + p.y * p.y)
}
func (p *Point) Scale(factor float64) {
p.x *= factor
p.y *= factor
}
为类型 *Point
绑定了 2 个方法 Length
和 Scale
。
方法的类型就是以接收者作为第一个参数的函数类型,例如 Scale
方法:
func(p *Point, factor float64)
但是以这种方式声明的函数并不是方法。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论