入门第 6 / 20 节35 分钟 · 实操
结构体(structs)与指针(pointers)
Go 课程的一部分
到目前为止,这门课里你写过的每个变量都只装着一个孤零零的值:一个数字,一个字符串,一个切片。可现实中的数据很少是单个出现的。屏幕上的一个点,需要 x 和 y 待在一起。一个用户,需要名字和电子邮件待在一起。你当然可以用 pointX、pointY 这样分开的变量来记,但没有任何东西拦得住你改了其中一个却忘了另一个;而且一旦你想把“这个点”传进某个函数,最后传的就是两个只有凑成一对才有意义的实参,把它们绑在一起的只有你自己的记性。Go 提供了一种办法,把相关的字段打成一包、当作一个整体传来传去:结构体(struct)。这一课讲怎么定义结构体,字段不赋值时零值是什么样,以及指针(pointer)这个总是和结构体一起出现的第二个概念,怎样让函数伸回去改动原来的值,而不是改一份用完就扔的副本。
想象一张纸质的登记表:一个长方形,里面是带标签的方框,“姓名”“年龄”“电子邮件”,每一格都期待某种特定的答案。表格本身是个模板,一个带命名格子的形状。填一张出来,得到的就是某个具体的人的答案,安放在这个形状里面。Go 里的结构体正是这样一个模板:一个由若干字段组成的具名类型,每个字段有自己的名字和自己的类型。形状定义好之后,你想填多少份就填多少份,每一份都是彼此独立的值。
想在真实环境里学习 Go 结构体(structs)与指针(pointers) 吗?
点击下方,立即获得一台预装 Go 的 Linux 主机,跟懂你代码的 AI 导师一起完成 结构体(structs)与指针(pointers) 的实操练习。
开始这节课结构体(structs)与指针(pointers)你将学到什么
- Struct definition
- Field access
- Zero values for structs
- Pointer types
- & and * operators
- Pointer receivers vs value receivers
- When to use a pointer
用你的语言阅读本课
本课程的所有课时
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小时
