直接看代碼linux
func getuid(path string) string { var uid string info, _ := os.Stat(path) if stat, ok := info.Sys().(*syscall.Stat_t); ok { uid = strconv.Itoa(int(stat.Uid)) } return uid }
從上圖中咱們看到fileinfo裏有個sys的方法他是返回一個空接口,那麼爲何返回一個空接口?不直接返回這些信息呢。這是由於不一樣操做系統返回的東西不同,在linux咱們能夠斷言成syscall.Stat_t,在windows則是斷言成另一個東西,
咱們再看看stat_t存放了什麼windows
type Stat_t struct { Dev uint64 Ino uint64 Nlink uint64 Mode uint32 Uid uint32 Gid uint32 X__pad0 int32 Rdev uint64 Size int64 Blksize int64 Blocks int64 Atim Timespec Mtim Timespec Ctim Timespec X__unused [3]int64 }
這個結構體就有咱們須要的uidui