容纳多种类型之一的联合类型
在同一位置存储不同的数据形态。
容纳多种类型之一的联合类型 是 CoddyKit 上的免费 Zig Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Zig Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Zig Academy 课程共包含 4 节课。
本课时的部分内容尚未翻译,以英文显示。
One Slot, Many Shapes
Sometimes a value could be an integer or a float, but only one at a time. A union stores exactly one of several possible types in a single slot.
Declaring a Union
You write union and list named fields, each with its own type. The value holds just one of those fields at any moment.
const Number = union { int: i64, float: f64 };It Holds One Field at a Time
Unlike a struct, a union does not keep every field at once. It stores a single active field, and the others are not present.
Setting the Active Field
You initialize a union by choosing one field with the dot syntax. That field becomes the active one for the value.
var n = Number{ .int = 42 };Reading the Active Field
You read a union through the field you set. Access n.int and you get the integer you stored, just like reaching into a struct.
const x = n.int;Memory Is Shared
A union reserves room for its largest field and reuses that space. This makes it a compact way to hold one of several variants.
Switching the Active Field
Assigning a new field makes that field the active one and the old value goes away. The union now represents a different shape.
n = Number{ .float = 3.14 };Reading the Wrong Field
If you read a field that is not active, that is a bug. In safe builds Zig detects the wrong access and triggers a panic.
const f = n.int; // wrong field activeA Bare Union Has No Tag
A plain union does not remember which field is active. You must track that yourself, which is exactly the problem a tagged union solves.
Unions vs Structs
A struct is a logical AND of its fields, all present together. A union is a logical OR: just one field lives at a time.
When to Reach for a Union
Use a union when a value naturally takes one of a few forms, like a token that is a number or a symbol, never both at once.
Quick Check
How many of a union's fields hold a value at the same time?
Recap
You met unions: one slot that holds a single field from several typed options. They share memory, so set and read only the active field. 🔀
常见问题解答
「容纳多种类型之一的联合类型」课时是免费的吗?
是的 — 「容纳多种类型之一的联合类型」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Zig Academy 课程的其余内容,请升级到 CoddyKit PRO。 Zig Academy 课程共包含 4 节课。
「容纳多种类型之一的联合类型」这节课中我会学到什么?
在同一位置存储不同的数据形态。 你通过在浏览器中直接运行的动手代码来练习 Zig Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Zig Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Zig Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「容纳多种类型之一的联合类型」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Zig Academy 课中编写并运行代码吗?
能。每节 Zig Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 使用枚举表示固定值集合
- 容纳多种类型之一的联合类型
- 带标签的联合类型与 switch
- 枚举方法与底层整数