前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >go每日一库 [home-dir] 获取用户主目录

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

原创
作者头像
happlyfox
修改2021-04-01 17:53:41
2.9K0
修改2021-04-01 17:53:41
举报
文章被收录于专栏:技术开源分享技术开源分享

关于我

我的博客|文章首发

顾名思义,go-homedir用来获取用户的主目录。实际上,通过使用标准库os/user我们也可以得到内容,使用以下方式

标准库使用

代码语言:javascript
复制
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:将路径中的第一个~扩展成用户主目录。

下面我们通过一个案例进行说明

代码语言:javascript
复制
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

欢迎关注公众号 程序员工具集 👍👍 致力于分享优秀的开源项目、学习资源 、常用工具

回复关键词“关注礼包”,送你一份最全的程序员技能图谱。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 标准库使用
  • 为什么要用home-dir
  • home-dir 使用
  • 参考
  • END
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档