摘要: 内嵌一个T类型,那么T的方法都被纳入。内嵌允许构成复杂的类型,该类型由许多字段构成,每个字段提供一些方法。内嵌能够帮助我们在未命名的结构体类型中声明方法。 阅读全文
posted @ 2018-07-17 15:29 一片湖海 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 由于主调函数会复制每一个实参变量,如果要更新变量或避免复制,我们需要指针传递。同样适合于更新接收者。习惯上,如果一个方法使用指针接收者,那么所有的方法应该使用指针接收者。编译器会对变量进行隐式转换:1.实参和形参接受者同类型,不转换2.实参是T,形参是*T。编译器会隐式获取变量的地址。3.实参是*T 阅读全文
posted @ 2018-07-17 15:29 一片湖海 阅读(131) 评论(0) 推荐(0) 编辑
摘要: Go和许多其他面向对象的语言不同,它可以将方法绑定到任何类型上。同一个包下的任何类型都可以声明方法,只要它的类型既不是指针类型也不是接口类型。类型拥有的所有方法名必须是唯一的,但不同的类型可以使用相同的方法名。 阅读全文
posted @ 2018-07-17 15:28 一片湖海 阅读(146) 评论(0) 推荐(0) 编辑
摘要: Go语言只有一种方式控制命名的可见性:首字母大写的标识符是可以从包中导出的。要封装一个对象,必须使用结构体。 阅读全文
posted @ 2018-07-17 15:28 一片湖海 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 方法变量,函数只需要提供实参而不需要提供接受者就能够调用。p := Point{1, 2}q := Point{4, 6}d := p.Distance //方法变量fmt.Println(d(q)) //"5"方法表达式,把原来的方法接收者替换成函数的第一个形参,因此它可以像平常的函数一样调用。p 阅读全文
posted @ 2018-07-17 15:27 一片湖海 阅读(150) 评论(0) 推荐(0) 编辑