Go 学习笔记(42)— Go 标准库之 os/user(获取Uid、Gid、Username、Name、HomeDir、查询用户、查询用户组)

1. 引用说明

import "os/user"

user 包允许通过名称或 ID 查询用户帐户。

type User struct {
     
    Uid      string // 用户ID
    Gid      string // 初级组ID
    Username string
    Name     string
    HomeDir  string
}

User 代表一个用户帐户。

  • posix 系统中 UidGid 字段分别包含代表 uidgid 的十进制数字;
  • windows 系统中 UidGid 包含字符串格式的安全标识符( SID );
  • Plan 9 系统中, UidGidUsernameName 字段是 /dev/user 的内容;
type Group struct {
     
	Gid  string // group ID
	Name string // group name
}

Group 表示一组用户

  • POSIX 系统上, Gid 包含一个表示组 ID 的十进制数;

2. 相关函数

2.1 func Current

func Current() (*User, error)

返回当前用户。

2.2 func Lookup

func Lookup(username string) (*User, error)

根据用户名查询用户。

2.3 func LookupId

func LookupId(uid string) (*User, error)

根据用户 id 查询用户。

2.4 func LookupGroup

func LookupGroup(name string) (*Group, error) 

根据用户组名称查询用户, 返回用户组 Group 的对象指针。

2.5 func LookupGroupId

func LookupGroupId(gid string) (*Group, error)

根据用户组 id 查询用户,返回用户组 Group 的对象指针。

3. 使用示例

package main

import (
	"fmt"
	"os/user"
)

func main() {
     
	u, err := user.Current()
	if err != nil {
     
		fmt.Println("error")
	}
	fmt.Printf("u.Uid: %s, u.Gid: %s, u.Name: %s, u.HomeDir: %s, u.Username: %s\n",
		u.Uid, u.Gid, u.Name, u.HomeDir, u.Username)

	lu, err := user.Lookup("wohu")
	if err != nil {
     
		fmt.Println("error")
	}
	fmt.Printf("lu.Uid: %s, lu.Gid: %s, lu.Name: %s, lu.HomeDir: %s, lu.Username: %s\n",
		lu.Uid, lu.Gid, lu.Name, lu.HomeDir, lu.Username)

	li, err := user.LookupId("1000")
	if err != nil {
     
		fmt.Println("error")
	}
	fmt.Printf("li.Uid: %s, li.Gid: %s, li.Name: %s, li.HomeDir: %s, li.Username: %s\n",
		li.Uid, li.Gid, li.Name, li.HomeDir, li.Username)

	lg, err := user.LookupGroup("wohu")
	if err != nil {
     
		fmt.Println("error")
	}
	fmt.Printf("lg.Gid: %s, lg.Name: %s\n",
		lg.Gid, lg.Name)

	lgi, err := user.LookupGroupId("1000")
	if err != nil {
     
		fmt.Println("error")
	}
	fmt.Printf("lgi.Gid: %s, lgi.Name: %s\n",
		lgi.Gid, lgi.Name)

}

你可能感兴趣的:(Go)