关于我

我的博客|文章首发

顾名思义,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每日一库 [home-dir] 获取用户主目录的更多相关文章

  1. Linux获取用户主目录

    #!/usr/bin/python# -*- coding:utf-8 -*-import sysimport osclass get_home_path(object): def __init__( ...

  2. Go 每日一库之 go-homedir

    简介 今天我们来看一个很小,很实用的库go-homedir.顾名思义,go-homedir用来获取用户的主目录. 实际上,使用标准库os/user我们也可以得到这个信息: package main i ...

  3. 使用纯真IP库获取用户端地理位置信息

    引言 在一些电商类或者引流类的网站中经常会有获取用户地理位置信息的需求,下面我分享一个用纯真IP库获取用户地理位置信息的方案. 正文 第一步:本文的方案是基于纯真IP库的,所以首先要去下载最新的纯真I ...

  4. Node.js:实现知乎(www.zhihu.com)模拟登陆,获取用户关注主题

    前一段时间,在瞎看看 Node.js,便研究通过 Node.js 实现知乎模拟登陆.相信,有很多网站有登陆权限设置,如若用户未登陆,将会跳转至首页提醒用户登陆,无法浏览部分页面. 如若是 b/s 架构 ...

  5. 【转】【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料

    转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9057257 由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字 ...

  6. 关于Spring Security 3获取用户信息的问题

    标签: spring security 3标签获取用户信息 2013-01-05 10:40 5342人阅读 评论(0) 收藏 举报  分类: Spring(25) java(70) 前端(7)    ...

  7. 关于微信小程序拒绝授权后,重新授权并获取用户信息

    最近公司做了一些有关微信小程序的项目,涉及到授权获取用户基本信息,但是在拒绝授权之后就不会再出现授权窗口: 看网上也有很多人遇到了同样的问题,所以记录下来我的处理方法,供大家和自己学习和记录: 当调用 ...

  8. 【Go】获取用户真实的ip地址

    原文链接:https://blog.thinkeridea.com/201903/go/get_client_ip.html 用户请求到达提供服务的服务器中间有很多的环节,导致服务获取用户真实的 ip ...

  9. 小程序wx.getUserInfo获取用户信息方案介绍

    问题模块 框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本 API和组件 - -   - -     背景 小程序一个比较重要的能力就是获取用户信息,也就是使用 wx.g ...

随机推荐

  1. React Hooks in depth

    React Hooks in depth React Hooks https://reactjs.org/docs/hooks-rules.html https://www.npmjs.com/pac ...

  2. Open API collection

    Open API collection online API https://developer.github.com/v3/ https://developer.github.com/v4 http ...

  3. vue & table with operation slot

    vue & table with operation slot seed demo <!-- @format --> <template> <seed ref=& ...

  4. js in depth: Object & Function & prototype & __proto__ & constructor & classes inherit

    js in depth: Object & Function & prototype & proto & constructor & classes inher ...

  5. Flutter 区分开发环境和生产环境

    Uri _baseUrl; final isProd = const bool.fromEnvironment('dart.vm.product'); if (isProd) { _baseUrl = ...

  6. 「NGK每日快讯」2021.1.7日NGK第65期官方快讯!

  7. 1071 Speech Patterns——PAT甲级真题

    1071 Speech Patterns People often have a preference among synonyms of the same word. For example, so ...

  8. 处理ios键盘弹出按钮点击click失效

    用ontouchstart绑定事件即可,然后用 document.activeElement.blur();让键盘收起 this.value = value.replace(/\s/g, " ...

  9. mtk相机冷启动拆解

    1 概述 冷启动大致可以分成以下几块内容: S0 (system) 主要是 Activity 的创建耗时(从 Touch up,即 ptr:up 开始) ptr:up S1 App 从 Activit ...

  10. JS产生GUID

    //生成全球唯一字符串function guidGenerator() { var S4 = function () { return (((1 + Math.random()) * 0x10000) ...