私は 9front/Plan9 のファイル マネージャーに取り組んでいます。開発作業は、Plan9 バイナリをビルドするためのクロスコンパイルを使用して、64 ビット Ubuntu の Go v1.15 で行われます。
ユーザー/グループ情報を取得する関数を想定しましょう:
import "syscall"
func GetXid(info os.FileInfo) (string, string) {
UID := "N/A"
GID := "N/A"
if stat, ok := info.Sys().(*syscall.Stat_t); ok {
UID = strconv.Itoa(int(stat.Uid))
GID = strconv.Itoa(int(stat.Gid))
}
return UID, GID
}
Plan9 のコンパイル中に失敗しますundefined: syscall.Stat_t
。
syscall
パッケージ ページには、Go v1.4 から廃止され、OS 固有のリポジトリに置き換えられたと記載されていgolang.org/x/sys/
ます。
os.FileInfo.Sys
Linux および Plan9の OS 固有のキャストを実装する方法