变量 (Variables)
在 Zig 中,你可以使用 const 声明常量,使用 var 声明变量。
const (常量)
const声明的值必须在编译时或运行时初始化,并且一旦初始化后就不能被修改。- 编译器会尝试将
const值视为编译时已知,以进行优化。
const answer = 42;
const name: []const u8 = "Zig";
var (变量)
var声明的值可以在其生命周期内被修改。var必须被初始化,但可以使用undefined来表示一个未指定的值。
var counter: i32 = 0;
counter += 1;
var temp_value: f32 = undefined;
temp_value = 1.23;
标识符 (Identifiers)
标识符用于命名变量、函数、类型等。它们必须以字母或下划线开头,后跟字母、数字或下划线。
如果标识符与关键字冲突,可以使用 @"" 语法转义。
容器级变量 (Container Level Variables)
在结构体、枚举或联合等容器中声明的变量是容器级变量。它们属于该容器的类型,而不是实例。
const MyContainer = struct {
var instance_count: usize = 0; // 容器级变量
fn init() MyContainer {
instance_count += 1;
return MyContainer{};
}
};
静态局部变量 (Static Local Variables)
在函数内部声明的 var 可以是静态的,这意味着它在函数调用之间保持其值。
fn get_counter() usize {
var counter: usize = 0; // 这是每次调用都会重新初始化的局部变量
// 为了实现静态局部变量,通常需要将其定义在函数外部或使用特殊的机制
}
线程局部变量 (Thread Local Variables)
使用 threadlocal 关键字可以声明线程局部变量,每个线程都有其独立的副本。
threadlocal var my_thread_id: usize = 0;
另请参阅:
- Assignment (赋值)
- undefined (未定义)