user包提供了根据用户id查询用户相关信息的方法
包:os/user
- 获取当前用户信息
func Current() (*User, error) // 获取当前用户信息,返回一个User结构体,结构体中的Username,Uid,HomeDir,Gid分别表示当前用户的名称,用户id,用户主目录,和用户所属组id
下面看例子(获取当前用户信息):
package main
import (
"log"
"os/user"
)
func main() {
u, _ := user.Current()
log.Println("用户名:", u.Username)
log.Println("用户id", u.Uid)
log.Println("用户主目录:", u.HomeDir)
log.Println("主组id:", u.Gid)
// 用户所在的所有的组的id
s, _ := u.GroupIds()
log.Println("用户所在的所有组:", s)
}
运行结果:
- 下面看查询用户和组的相关方法
func Lookup(username string) (*User, error) // 根据字符串查询用户 ,如果没有返回error不为空;注意username字符串是全部匹配,不是模糊匹配 func LookupGroup(name string) (*Group, error) // 根据字符串查询组 ,如果没有返回error不为空;注意name字符串也是全部匹配,返回的组结构体,只包含一个Name(组名称)和Gid(组id)二个字段 func LookupId(uid string) (*User, error) // 根据用户id查询用户 func LookupGroupId(gid string) (*Group, error) // 根据组id查询组ps:这些方法也只是用做了解,平时用的不多,读者可跳过。
下面看例子:
package main
import (
"log"
"os"
"os/user"
)
func main() {
// 查询用户 dalgurak
us, _ := user.Lookup("dalgurak")
if us == nil {
log.Println("用户不存在!")
os.Exit(0)
}
log.Println("查询到的用户:", us.Username)
// 查询组 dalgurak
g, _ := user.LookupGroup("dalgurak")
if g == nil {
log.Println("组不存在!")
os.Exit(0)
}
log.Println("查询到的组:", g.Name)
log.Println("组id:", g.Gid)
// LookupGroupId和LookupId是根据id查询,返回结果与根据名称查询一致,只是查询的参数不一样,这里不在演示
}
运行结果:
os/user包算是介绍完了,方法比较少,开发中用的不多,全做了解