新建一个文件 代码登录后可见,内容如下:
代码登录后可见
代码登录后可见
代码登录后可见
代码登录后可见
然后在终端跑:
代码登录后可见
代码登录后可见
恭喜,你已经成功运行了第一个 Zig 程序!
我们一行一行来看:
代码登录后可见
代码登录后可见 是声明一个常量(constant),后面不能改。
代码登录后可见 是这个常量的名字,你可以起别的名字(比如 代码登录后可见),但大家都叫 代码登录后可见,所以你也叫 代码登录后可见 就行。
代码登录后可见 是一个内建函数(built-in function),名字前带 代码登录后可见 的都是 Zig 自带的"魔法函数"。代码登录后可见 的作用是导入一个文件或包,返回那个文件里所有 代码登录后可见(公开)声明的"集合"(就是一个 struct)。
代码登录后可见 是一个特殊字符串,表示"导入标准库"
代码登录后可见
代码登录后可见 是 public(公开)的缩写。代码登录后可见 函数是程序的入口,必须是 代码登录后可见(虽然在 main 函数自己这里不强制,但写上没坏处)。
代码登录后可见 是 function(函数)的缩写。
代码登录后可见 是函数名,跟 C 一样,操作系统找 代码登录后可见 这个符号作为入口。
代码登录后可见 是参数列表,这里空着,表示 main 函数不接受任何命令行参数(严格说是不接受普通参数,要接受可以用 代码登录后可见)。
代码登录后可见 是返回类型。代码登录后可见 在 Zig 里就是"没有值"的意思,C 里的 代码登录后可见 同样含义。
代码登录后可见
代码登录后可见 是标准库里的一个打印函数,把内容写到 stderr(标准错误)。
代码登录后可见 是格式字符串,代码登录后可见 是占位符,会被后面的实参替换。代码登录后可见 是换行符(跟 C 一样)。
代码登录后可见 是一个匿名结构体字面量(anonymous struct literal),用来给格式化函数传多个参数。这里只有 代码登录后可见 一个字段(字段名是 代码登录后可见 字符串本身),会被填到 代码登录后可见 的位置。
每行结尾的 代码登录后可见 是必须的,跟 C 一样。
1. 为什么是 代码登录后可见 而不是 代码登录后可见?
因为 Zig 的标准库设计原则是「没有隐藏的副作用」。代码登录后可见 明确告诉你这个函数会写到 stderr,是调试用的。如果你要写到 stdout,得用 代码登录后可见 然后 代码登录后可见,这样很明确。
2. 为什么输出到了 stderr?
原文说:"代码登录后可见 will be written to stderr"。对,代码登录后可见 是写到 stderr 的,代码登录后可见 可以看到效果:
代码登录后可见
代码登录后可见
3. 为什么要用 代码登录后可见 这种奇怪的语法?
这是 Zig 独有的设计。当一个函数的参数都是「不同类型但可以由编译器推断」时,你不需要给每个参数加类型,直接 代码登录后可见 就行。代码登录后可见 实际上等价于:
代码登录后可见
后续讲「匿名结构体」时会详细解释。
4. 文件编码必须是 UTF-8
如果你的编辑器默认是 GBK、UTF-16 之类的,Zig 编译器会拒绝。可以这样修:
代码登录后可见
或者在编辑器里另存为 UTF-8。
只想编译,不想运行:
代码登录后可见
代码登录后可见
代码登录后可见
代码登录后可见
Zig 有两种注释,跟 C/C++/JavaScript 一样:
代码登录后可见
代码登录后可见
Zig 也支持 代码登录后可见 文档注释(doc comment),用 代码登录后可见 生成文档时会被提取出来——详见第 54 章。文件级注释用 代码登录后可见。