關於我
顧名思義,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
歡迎關注公眾號 程序員工具集 👍👍 致力於分享優秀的開源項目、學習資源 、常用工具
回復關鍵詞“關注禮包”,送你一份最全的程序員技能圖譜。