当前位置:网站首页>【愚公系列】2022年08月 Go教学课程 033-结构体方法重写、方法值、方法表达式
【愚公系列】2022年08月 Go教学课程 033-结构体方法重写、方法值、方法表达式
2022-08-09 08:10:00 【愚公搬代码】
一、结构体方法重写和方法值
1.方法重写
方法重写又称方法覆盖。方法重写概念方法的重写是指两个方法的返回值、方法名、参数的类型和个数相同(子类重写父类的方法)。方法的重写,不能发生在同类中,只能发生在子类中。若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。
package main
import "fmt"
type Person struct {
name string
age int
}
func (p *Person) PrintInfo() {
fmt.Println("这是父类中的方法")
}
type Student struct {
Person
score float64
}
func (p *Student) PrintInfo() {
fmt.Println("这是子类中的方法")
}
func main() {
var stu Student
stu.PrintInfo() // 如果父类中的方法名称与子类中的方法名称一致,那么通过子类的对象调用的是子类中的方法。方法重写
stu.Person.PrintInfo()
}
2.方法值和方法表达式
- 方法值:相当于方法指针
- 方法表达式:显示的传参(这里没有继承概念)
方法值和方法表达式,也就是“方法对象赋值给变量”
两种使用方式:
- 1)隐式调用, struct实例获取方法对象---->方法值
- 2)显示调用, struct类型获取方法对象, 须要传递struct实例对象作为参数。---->方法表达式
package main
import "fmt"
type Person struct {
name string
age int
}
func (p *Person) PrintInfo() {
fmt.Println(*p)
}
func main() {
per := Person{
"愚公", 18}
per.PrintInfo()
//方法值。
//f := per.PrintInfo
//fmt.Printf("%T",f)
//f()
//方法表达式
f := (*Person).PrintInfo
f(&per)
}
边栏推荐
猜你喜欢
随机推荐
OpenHarmony Light Smart Product Development Live Notes
897. 增加订单搜索树
传输层协议介绍
NAT地址转换的原理与配置
Operations in the database (syntax)
eTS UI开发学习
Result consisted of more than one row
Set集合
bs4之爬取诗词学习
The MySQL database
3D精彩案例,清软英泰建成综合轻量化显示平台!
Solidworks 2022 Inspection新增功能:光学字符识别、可自定义的检查报告
Shell编程之正则表达式
SQL存储过程
路由配置转发及实验
火星人 --简单的数学题
Web 3D渲染引擎HOOPS Communicator动画编辑器的使用 | HOOPS教程
包子凑数----欧几里得+dp
Introduction to Network Layer Protocols
Collection 接口 & List 接口