Golang 库和命令学习汇总
库
OS
func Chdir(dir string)//error 将当前工作目录更改为dir目录
func Getwd()(dir string,err error) //获取当前目录,和linux中pwd类似
func Chomd(name string,mode FileMode)error //更改文件的权限(读、写、执行)
func Chown(name string,uid,gid int)error //更改文件拥有者owner
func Chtimes(name string,atime time.Time,mtime time.Time)error //更改文件的访问时间和修改时间,atime->访问时间,mtime->更改时间
func Clearenv() // 清除所有环境变量
fun Exit(code int) //系统退出,code=0代表正常退出,非0为异常退出
func os.Expand(s string,mapping func(string)string)string
func main() { mapping := func(key string) string { m := make(map[string]string) m = map[string]string{ "world": "kitty", "hello": "hi", } if m[key] != "" { return m[key] } return key } s := "hello,world" // hello,world,由于hello world之前没有$符号,则无法利用map规则进行转换 s1 := "$hello,$world $finish" // hi,kitty finish,finish没有在map规则中,所以还是返回原来的值 fmt.Println(os.Expand(s, mapping)) fmt.Println(os.Expand(s1, mapping)) }
Time
Time 时间对象,Duration 时间间隔
Now()Time
返回一个Time当前时间对象
Add(u Time)Duration
当前时间加上time之后的时间
func Sub(u Time) Duration
当前时间减去u剩余的时间
(t Time)After(u Time)bool
如果t时间在u之后 return true else return false
(t Time)Before(u Time)bool
如果t实际在u之前 return true else return false
Path
func Walk(root string,walkFn walkFunc)error
遍历指定目录(包括子目录),对便利的项目用walkFn函数处理
func walkFn(path string,info os.FileInfo,err error)error
path为当前文件或目录路径,info为文件描述信息,通常重写该方法,可以做到在遍历目录时对目录的一些操作
func Match (pattern,name string)
根据pattern进行匹配 找到指定目录或文件名
fsnotify
使用 Go 语言实现了跨平台的文件系统变化通知
exec
func Command(name string,arg ...string) *Cmd
name是命令名称如:ls,arg是命令的参数如:-lah
Type Cmd
type Cmd struct { // Path是将要执行的命令的路径。 // // 该字段不能为空,如为相对路径会相对于Dir字段。 Path string // Args保管命令的参数,包括命令名作为第一个参数;如果为空切片或者nil,相当于无参数命令。 // // 典型用法下,Path和Args都应被Command函数设定。 Args []string // Env指定进程的环境,如为nil,则是在当前进程的环境下执行。 Env []string // Dir指定命令的工作目录。如为空字符串,会在调用者的进程当前目录下执行。 Dir string // Stdin指定进程的标准输入,如为nil,进程会从空设备读取(os.DevNull) Stdin io.Reader // Stdout和Stderr指定进程的标准输出和标准错误输出。 // // 如果任一个为nil,Run方***将对应的文件描述符关联到空设备(os.DevNull) // // 如果两个字段相同,同一时间最多有一个线程可以写入。 Stdout io.Writer Stderr io.Writer // ExtraFiles指定额外被新进程继承的已打开文件流,不包括标准输入、标准输出、标准错误输出。 // 如果本字段非nil,entry i会变成文件描述符3+i。 // // BUG: 在OS X 10.6系统中,子进程可能会继承不期望的文件描述符。 // http://golang.org/issue/2603 ExtraFiles []*os.File // SysProcAttr保管可选的、各操作系统特定的sys执行属性。 // Run方***将它作为os.ProcAttr的Sys字段传递给os.StartProcess函数。 SysProcAttr *syscall.SysProcAttr // Process是底层的,只执行一次的进程。 Process *os.Process // ProcessState包含一个已经存在的进程的信息,只有在调用Wait或Run后才可用。 ProcessState *os.ProcessState // 内含隐藏或非导出字段 }
命令
go generate
命令是在Go语言 1.4 版本里面新添加的一个命令,当运行该命令时,它将扫描与当前包相关的源代码文件,找出所有包含//go:generate
的特殊注释,提取并执行该特殊注释后面的命令。
//go:generate go run main.go