Где Stat_t определен для plan9?
В plan9
конкретный код Go для syscall
, здесь нет Stat_t
как с другими GOOS
, Где Stat_t
или его эквивалент определен?
1 ответ
TL;DR: это *syscall.Dir
тип. Читайте дальше для деталей.
Источник для os.Stat
на Plan9 здесь. Это вызывает dirstat
, который определен здесь. Он возвращает возвращаемое значение dirstat
в fileInfoFromStat
, который определен в том же файле здесь.
В случае путей (в отличие от *File
объекты), dirstat
просто звонки syscall.Stat
, который в основном просто тонкая обертка вокруг stat
, syscall.Stat
ожидает, что байтовый буфер сможет писать в. Этот буфер немного обрабатывается (см. dirstat
для деталей), а затем подается в syscall.UnmarshalDir
, где происходит волшебство. В документации говорится, что она "декодирует одно сообщение статистики 9P" из буфера и возвращает *syscall.Dir
,
dirstat
затем проходит это *syscall.Dir
в fileInfoFromStat
что и превращает его в FileInfo
, Именно это *syscall.Dir
значение, которое получается через Sys()
метод на FileInfo
объект.