duan3019 2019-07-24 23:07 采纳率: 100%
浏览 368
已采纳

如何在Go中获取文件的组ID(GID)?

Stat ()返回了一个 FileInfo 对象,该对象有一个 Sys ()方法,但是该方法返回了一个没有方法的 Interface {}。

尽管我能够通过fmt.Printf()来“查看”GID,但我无法以编程方式访问“GID”。

如何在这里检索文件的“GID”?

file_info, _ := os.Stat(abspath)
file_sys := file_info.Sys()
fmt.Printf("File Sys() is: %+v", file_sys)

Prints:

File Sys() is: &{Dev:31 Ino:5031364 Nlink:1 Mode:33060 Uid:1616 Gid:31 X__pad0:0 Rdev:0 Size:32 Blksize:32768 Blocks:0 Atim:{Sec:1564005258 Nsec:862700000} Mtim:{Sec:1563993023 Nsec:892256000} Ctim:{Sec:1563993023 Nsec:893251000} X__unused:[0 0 0]}

注意:我不需要一个可移植的解决方案,它只需要能在Linux上工作(因为众所周知,Sys()是片状的)。

可能相关:Convert interface{} to map in Golang

  • 写回答

1条回答 默认 最新

  • doujiao2000 2019-07-24 23:40
    关注

    The reflect module showed that the data type for Sys()'s return is *syscall.Stat_t, so this seems to work to get the Gid of a file as a string:

    file_info, _ := os.Stat(abspath)
    file_sys := file_info.Sys()
    file_gid := fmt.Sprint(file_sys.(*syscall.Stat_t).Gid)
    

    Please let me know if there is a better way to do this.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度