Golang 如何获得当前的用户名和目录
有时,我们想知道哪个用户在执行当前程序,在哪个目录下,我们可以在Go标准库的 os 包内的user包的帮助下获得所有这些细节。
在这篇文章中,我们将探讨三种情况,首先,我们将注销正在执行当前程序的 用户名 ,然后我们将注销 名字 和 ID ,最后,我们将注销当前程序所在的 目录 。
获取用户名
要获得 用户名 ,我们只需调用 Current() 函数,它将返回当前用户。请看下面的代码。
package main
import (
"fmt"
"log"
"os/user"
)
func main() {
currentUser, err := user.Current()
if err != nil {
log.Fatalf(err.Error())
}
username := currentUser.Username
fmt.Printf("Username is: %s\n", username)
}
输出
如果我们在上述代码上运行命令 go run main.go ,那么我们将在终端得到以下输出。
Username is: apache
获取姓名和ID
为了获得用户的名字和ID,我们对当前用户分别调用 Name() 和 Uid() 函数。请看下面的代码。
package main
import (
"fmt"
"log"
"os/user"
)
func main() {
currentUser, err := user.Current()
if err != nil {
log.Fatalf(err.Error())
}
name := currentUser.Name
id := currentUser.Uid
fmt.Printf("name is: %s and id is: %s\n", name, id)
}
输出
如果我们在上述代码上运行命令 go run main.go ,那么我们将在终端得到以下输出。
name is: Apache and id is: 48
获取当前目录
要获得当前目录,我们只需要在当前用户身上调用 HomeDir() 函数。请看下面的代码。
package main
import (
"fmt"
"log"
"os/user"
)
func main() {
currentUser, err := user.Current()
if err != nil {
log.Fatalf(err.Error())
}
dir := currentUser.HomeDir
fmt.Printf("dir is: %s\n", dir)
}
输出
如果我们在上述代码上运行命令 go run main.go ,那么我们将在终端得到以下输出。
dir is: /usr/share/httpd