Go指南:方法和接口
2024-09-18 18:33:07
方法与指针重定向
带指针参数的函数必须接受一个指针:
func ScaleFunc(v *Vertex, f float64) {
v.X = v.X * f
v.Y = v.Y * f
}
以指针为接收者的方法被调用时,接收者既能为值又能为指针:
func (v *Vertex) Scale(f float64) {
v.X = v.X * f
v.Y = v.Y * f
}
对于语句 v.Scale(5)
,即便 v
是个值而非指针,带指针接收者的方法也能被直接调用。
Go 会将语句 v.Scale(5)
解释为 (&v).Scale(5)
使用指针接收者的原因:
方法能够修改其接收者指向的值
可以避免在每次调用方法时复制该值。若值的类型为大型结构体时,这样做会更加高效。
接口
接口类型 是由一组方法签名定义的集合。接口类型的变量可以保存任何实现了这些方法的值。
接口与隐式实现
类型通过实现一个接口的所有方法来实现该接口
type I interface {
M()
}
type T struct {
S string
}
// 此方法表示类型 T 实现了接口 I,但我们无需显式声明此事。
func (t T) M() {
fmt.Println(t.S)
}
func main() {
var i I = T{"hello"}
i.M()
}
最新文章
- POCO库——Foundation组件之核心Core
- JavaScript方法call、apply、caller、callee、bind的使用详解及区别
- Python导入cx_Oracle报错
- 从nib文件里加载collectionViewCell
- mongo复习
- 漫长Appium之路(一)——从黑苹果到虚拟机
- Redis错误配置详解
- 兰亭集势笔试题:用最优方法从LinkedList列表中删除重复元素
- cocos2d-x 开发中的小问题 在xcode4环境下
- Ant学习笔记(1) 基础知识
- DevExpress之列表控件
- UVA 10815 Andy&;#39;s First Dictionary(字符处理)
- Python学习笔记:概要
- DB2常用函数
- SQL 知道字段名 全表搜索此字段属于哪个表
- Chapter 4 Invitations——9
- Matlab中调用VS编译的exe文件并传递变量 的方法
- 七:理解控件的运行机制(例:基于CompositeControl命名空间的控件)
- HDU 3407.Zjnu Stadium 加权并查集
- 使用 axios 详解