go每日一库 [home-dir] 获取用户主目录

happlyfox · · 447 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

## 关于我 [我的博客|文章首发](http://www.zhouhuibo.club) 顾名思义,`go-homedir`用来获取用户的主目录。实际上,通过使用标准库`os/user`我们也可以得到内容,使用以下方式 ## 标准库使用 ``` package main import ( "fmt" "log" "os/user" ) func main() { u, err := user.Current() if err != nil { log.Fatal(err) } fmt.Println("Home dir:", u.HomeDir) } ``` > 控制台输出 > > Home dir: C:\Users\Administrator ## 为什么要用home-dir 内置`os/user`软件包在Darwin系统上需要cgo。这意味着任何使用该软件包的Go代码都无法交叉编译。但是99%的使用时间`os/user`只是用于检索主目录,我们可以在没有cgo的情况下为当前用户执行此操作。该库可以做到这一点,从而可以进行交叉编译。 ## home-dir 使用 `go-homedir`有两个功能: - `Dir`:获取用户主目录; - `Expand`:将路径中的第一个`~`扩展成用户主目录。 下面我们通过一个案例进行说明 ```> func homedirUse() { dir, err := homedir.Dir() if err != nil { log.Fatal(err) } fmt.Println("Home dir:", dir) dir = "~/parentRoot/childRoot" expandedDir, err := homedir.Expand(dir) if err != nil { log.Fatal(err) } fmt.Printf("Expand of %s is: %s\n", dir, expandedDir) } ``` > 控制台输出 > > Home dir: C:\Users\Administrator > Expand of ~/parentRoot/childRoot is: C:\Users\Administrator\parentRoot\childRoot Home dir 是当前用户主目录,在linux下对应/home/目录 Expandof将`~`转换成用户主目录地址,后台跟自己的地址进行拼接 ## 参考 https://github.com/mitchellh/go-homedir https://zhuanlan.zhihu.com/p/102785627 ## END 欢迎关注公众号 程序员工具集 👍👍 致力于分享优秀的开源项目、学习资源 、常用工具 回复关键词“关注礼包”,送你一份最全的程序员技能图谱。

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

447 次点击  ∙  1 赞  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传