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)