入门第 7 / 20 节35 分钟 · 实操
方法(methods)与接口(interfaces)
Go 课程的一部分
上一课教你把相关的字段打包进一个结构体,但结构体本身只装数据,没有行为。如果你想让 Rectangle 自己会算面积,要么写一个普通函数、把 Rectangle 当实参传进去,要么把行为直接挂到类型上,让它跟着数据一起走。Go 两种都支持,但把行为直接挂到类型上,才是让这门语言其余部分严丝合缝的关键,因为这也是 Go 回答一个更难的问题的方式:怎样写一个函数,让它能作用在许多不同的类型上,而这个函数事先又不必知道它们分别是什么?收银台不需要知道自己扫的是一罐汤还是一盒麦片,它只需要商品上有条能读的条形码。这一课把这个想法的两半,方法和接口,放在一起讲,因为在 Go 里它们其实是同一件事的两个方向。
方法 (method) 就是普通函数多加了一样东西:接收者 (receiver),也就是一个特定类型的具名变量,单独放在 func 和方法名之间的一对圆括号里。正是这个接收者让你能写 r.Area() 而不是 Area(r),就像一个已经和某台电视配好对的遥控器,不管你按哪个键,控制的永远只是那一台电视。
想在真实环境里学习 Go 方法(methods)与接口(interfaces) 吗?
点击下方,立即获得一台预装 Go 的 Linux 主机,跟懂你代码的 AI 导师一起完成 方法(methods)与接口(interfaces) 的实操练习。
开始这节课方法(methods)与接口(interfaces)你将学到什么
- Method declaration
- Receiver types
- Pointer vs value receivers
- Interface definition
- Implicit interface satisfaction
- Small interfaces
- Io.Writer example
用你的语言阅读本课
本课程的所有课时
20 节- 1你好,Go25 分钟
- 2变量与类型25 分钟
- 3控制流:if 与 for30 分钟
- 4函数30 分钟
- 5切片(slices)与映射(maps)35 分钟
- 6结构体(structs)与指针(pointers)35 分钟
- 7方法(methods)与接口(interfaces)35 分钟
- 8错误处理35 分钟
- 9模块(modules)与项目结构35 分钟
- 10迷你 CLI 综合项目40 分钟
- 11标准库之旅40 分钟
- 12测试与基准测试(benchmarks)40 分钟
- 13协程(goroutines)与通道(channels)40 分钟
- 14并发模式45 分钟
- 15泛型(generics)35 分钟
- 16HTTP 服务器45 分钟
- 17使用 database/sql 的数据库45 分钟
- 18性能与分析40 分钟
- 19Go 语言中的设计模式40 分钟
- 20部署与生产45 分钟
探索其他课程
Python
19 节 · 9.3小时
React
17 节 · 10.2小时
Linux
17 节 · 8.5小时
Docker
13 节 · 6.6小时
Git
13 节 · 5.9小时
Kubernetes
14 节 · 8小时
Ansible
12 节 · 6.1小时
Bash
12 节 · 5.7小时
Helm
10 节 · 5.4小时
GitLab CI
11 节 · 5.8小时
Jenkins
11 节 · 5.3小时
PostgreSQL
14 节 · 7.6小时
MySQL
13 节 · 6.8小时
Web
14 节 · 5.9小时
TypeScript
18 节 · 7.7小时
Vibe Coding
12 节 · 5.8小时
Prompt Engineering
11 节 · 6.2小时
Vibe 编程:基础
12 节 · 4.5小时
Vibe 编程:从原型到生产
12 节 · 5.5小时
Vibe 编程:多智能体工程
12 节 · 5.3小时
Vibe 编程:高级工程
12 节 · 7.3小时
