如何在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
广告