顧名思義,go-homedir
用來獲取用戶的主目錄。實(shí)際上,通過使用標(biāo)準(zhǔn)庫os/user
我們也可以得到內(nèi)容,使用以下方式
標(biāo)準(zhǔn)庫使用
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)
}
控制臺(tái)輸出
Home dir: C:\Users\Administrator
為什么要用home-dir
內(nèi)置os/user
軟件包在Darwin系統(tǒng)上需要cgo泊柬。這意味著任何使用該軟件包的Go代碼都無法交叉編譯。但是99%的使用時(shí)間os/user
只是用于檢索主目錄诈火,我們可以在沒有cgo的情況下為當(dāng)前用戶執(zhí)行此操作兽赁。該庫可以做到這一點(diǎn),從而可以進(jìn)行交叉編譯冷守。
home-dir 使用
go-homedir
有兩個(gè)功能:
Dir
:獲取用戶主目錄刀崖;Expand
:將路徑中的第一個(gè)~
擴(kuò)展成用戶主目錄。
下面我們通過一個(gè)案例進(jìn)行說明
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)
}
控制臺(tái)輸出
Home dir: C:\Users\Administrator
Expand of ~/parentRoot/childRoot is: C:\Users\Administrator\parentRoot\childRoot
Home dir 是當(dāng)前用戶主目錄拍摇,在linux下對(duì)應(yīng)/home/目錄
Expandof將~
轉(zhuǎn)換成用戶主目錄地址亮钦,后臺(tái)跟自己的地址進(jìn)行拼接
參考
https://github.com/mitchellh/go-homedir
https://zhuanlan.zhihu.com/p/102785627
END
歡迎關(guān)注公眾號(hào) 程序員工具集 ???? 致力于分享優(yōu)秀的開源項(xiàng)目、學(xué)習(xí)資源 充活、常用工具
回復(fù)關(guān)鍵詞“關(guān)注禮包”蜂莉,送你一份最全的程序員技能圖譜。