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


本文来自:CSDN博客

感谢作者:king1076

查看原文:Go user包

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。