Go user包

user的结构:

type User struct {
    Uid      string // user id
    Gid      string // primary group id
    Username string
    Name     string
    HomeDir  string
}

user包中的主要函数:

    type User
        func Current() (*User, error)
        func Lookup(username string) (*User, error)
        func LookupId(uid string) (*User, error)

事例1  windows:

package main

import (
	"fmt"
	"os/user"
)

func main() {
	usr, error := user.Current()
	if error == nil {
		fmt.Println(usr)
	}
}

[ `go run testuser.go` | done: 7.5934343s ]
	&{S-1-5-21-2450167352-2372647358-1749370957-1000 S-1-5-21-2450167352-2372647358-1749370957-513 City-PC\City  C:\Users\City}

事例2 windows:


package main

import (
	"fmt"
	"os/user"
)

func main() {
	usr, error := user.Current()
	if error == nil {
		fmt.Println(usr.Uid)
		fmt.Println(usr.Gid)
		fmt.Println(usr.Username)
		fmt.Println(usr.Name)
		fmt.Println(usr.HomeDir)
		_usr, error1 := user.Lookup(usr.Username)
		if error1 == nil {
			fmt.Println(_usr)
		} else {
			fmt.Println(error1.Error())
		}
	} else {
		fmt.Println(error.Error())
	}
}
[ `go run testuser.go` | done: 14.3608214s ]
	S-1-5-21-2450167352-2372647358-1749370957-1000
	S-1-5-21-2450167352-2372647358-1749370957-513
	City-PC\City
	
	C:\Users\City
	&{S-1-5-21-2450167352-2372647358-1749370957-1000 unknown City-PC\City  Unknown directory}
事例3 windows:

package main

import (
	"fmt"
	"os/user"
)

func main() {
	usr, error := user.Current()
	if error == nil {
		fmt.Println(usr.Uid)
		fmt.Println(usr.Gid)
		fmt.Println(usr.Username)
		fmt.Println(usr.Name)
		fmt.Println(usr.HomeDir)
		_usr, error1 := user.Lookup(usr.Uid)
		if error1 == nil {
			fmt.Println(_usr)
		} else {
			fmt.Println(error1.Error())
		}
	} else {
		fmt.Println(error.Error())
	}
}

[ `go run testuser.go` | done: 7.5694329s ]
	S-1-5-21-2450167352-2372647358-1749370957-1000
	S-1-5-21-2450167352-2372647358-1749370957-513
	City-PC\City
	
	C:\Users\City
	No mapping between account names and security IDs was done.



好像uid查询 在windows上不怎么起作用

包的bug提示:

 Lookup and LookupId functions do not set Gid and HomeDir fields in the User struct returned on windows.


Linux,Fedora19

code:

package main
import(
        "fmt"
        "os/user"
)
func PrintUsr(usr *user.User){
        fmt.Println("------------------------------")
        fmt.Println("Uid: ",usr.Uid)
        fmt.Println("Gid: ",usr.Gid)
        fmt.Println("Username: ",usr.Username)
        fmt.Println("Name: ",usr.Name)
        fmt.Println("HomeDir: ",usr.HomeDir)
}
func main(){
        usr,_ := user.Current()
        PrintUsr(usr)
        user1,_:=user.Lookup(usr.Name)
        PrintUsr(user1)
        user2,_:=user.LookupId(usr.Uid)
        PrintUsr(user2)
}

Result:

[jjy@localhost user]$ go run testuser.go
------------------------------
Uid:  1000
Gid:  1000
Username:  jjy
Name:  jjy
HomeDir:  /home/jjy
------------------------------
Uid:  1000
Gid:  1000
Username:  jjy
Name:  jjy
HomeDir:  /home/jjy
------------------------------
Uid:  1000
Gid:  1000
Username:  jjy
Name:  jjy
HomeDir:  /home/jjy


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值