七叶笔记 » golang编程 » Golang 常用4记 time,flag,io/ioutil

Golang 常用4记 time,flag,io/ioutil

  1. flag包实现了命令行参数的解析

使用方式:

flag.Type(name, defValue, usage)

其中Type为String, Int, Bool等;并返回一个相应类型的指针。

flag.TypeVar(&flag Var , name, defValue, usage)

将flag绑定到一个变量上,该种方式返回值类型。

flag.Var(&flagVal, “name”, “help message for flagname”)

flag.Var() 绑定自定义类型,自定义类型需要实现 Value 接口 (Receiver 必须为指针)

flagSet = flag.NewFlagSet(“xcl”,flag.ExitOnError)

NewFlagSet的第一个参数是可以任意定的.但第二个参数,则决定了参数解析出错时错误处理方式.

flag都注册之后,调用:flag.Parse() 来解析命令行参数写入注册的flag里。

解析后,flag后面的参数可以从flag. Args ()里获取或用flag.Arg(i)单独获取。

例1.

使用flag.String(), Bool(), Int()等函数注册flag

var music_file *string = flag.String(“file”, “musicfile”, “Use -file <filesource>”) //其中file为flagname,musicfile为值,Use -file <filesource>使用方法

go run flagTest.go -file “../music/sun.mp3”

例2.

var myFlagSet = flag.NewFlagSet(“myflagset”, flag.ExitOnError)

var stringFlag = myFlagSet.String(“abc”, “default value”, “help mesage”)

2.写文件

第一种方式: 使用 io .WriteString 写入文件

n, err1 := io.WriteString(f, wireteString) //写入文件(字符串)

第二种方式: 使用 ioutil.WriteFile 写入文件

err2 := ioutil.WriteFile(“./output2.txt”, d1, 0666) //写入文件(字节数组),d1为切片

第三种方式: 使用 File(Write,WriteString) 写入文件

n2, err3 := f.Write(d1) //写入文件(字节数组)

n3, err3 := f.WriteString(“writesn”) //写入文件(字节数组)

第四种方式: 使用 bufio.NewWriter 写入文件

w := bufio.NewWriter(f) //创建新的 Writer 对象

n4, err3 := w.WriteString(“bufferedn”)

3.读文件

ioutil 包

第一:如果读取成功,则 err 返回 nil ,而不是 EOF

func ReadAll(r io.Reader) ([] byte , error)

第二:如果读取成功,则 err 返回 nil,而不是 EOF

func ReadFile(filename string) ([]byte, error)

第三:返回的文件列表是经过排序的

func ReadDir(dirname string) ([]os.FileInfo, error)

第四:创建一个以test为前缀的临时文件夹,并返回文件夹路径

name, _ := ioutil.TempDir(“./”, “test”);

4.time

time.Now().Unix() //当前时间戳

time.Duration 时间段

time.Now(). Format (“2006-01-02 15:04:05”) //当前格式化时间;必须是这个时间点, 据说是go诞生之日

time.Unix(1389058332, 0).Format(“2006-01-02 15:04:05”) //时间戳转str格式化时间

time.Parse(“2006-01-02 15:04:05”, “2014-01-08 09:04:41”) //str格式化时间转时间戳

//昨天

d, _ := time.ParseDuration(“-24h”)

d1 := now.Add(d)

//10分钟后

mm, _ := time.ParseDuration(“1m”)

mm1 := now.Add(mm)

相关文章