为 plan9 定义的 Stat_t 在哪里?

Where is Stat_t defined for plan9?

plan9 syscall 的特定 Go 代码中,没有像其他 GOOS 那样的 Stat_tStat_t 或其等效定义在哪里?

TL;DR:是 *syscall.Dir 类型。继续阅读以了解详细信息。

Plan9 上 os.Stat 的来源是 here. It calls dirstat, which is defined here. It feeds the return value of dirstat into fileInfoFromStat, which is defined in the same file here

在路径的情况下(与 *File 对象相反),dirstat 只是调用 syscall.Stat,这基本上只是一个stat 周围的薄包装纸。 syscall.Stat 期望字节缓冲区能够写入。这个缓冲区经过一些处理(详见 dirstat),然后送入 syscall.UnmarshalDir,这就是神奇发生的地方。文档指出它来自缓冲区 "decodes a single 9P stat message" 和 returns 一个 *syscall.Dir.

dirstat 然后将此 *syscall.Dir 传递给 fileInfoFromStat,后者将其处理为 FileInfo。就是这个*syscall.Dir值是通过FileInfo对象的Sys()方法得到的。