直接看代码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