關於我
顧名思義,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將~
轉換成使用者主目錄地址,後臺跟自己的地址進行拼接
參考
github.com/mitchellh/go-homedir
zhuanlan.zhihu.com/p/102785627
END
歡迎關注公眾號 程式設計師工具集 ?? 致力於分享優秀的開源專案、學習資源 、常用工具
回覆關鍵詞“關注禮包”,送你一份最全的程式設計師技能圖譜。
本作品採用《CC 協議》,轉載必須註明作者和本文連結