Golang
Golang 关键字
- var和const :变量和常量的声明
- go : 用于并行
go 关键字用来创建 goroutine (协程),是实现并发的关键。
1234567891011 | //go 关键字放在方法调用前新建一个 goroutine 并让他执行方法体go GetThingDone(param1, param2);//上例的变种,新建一个匿名方法并执行go func(param1, param2) {}(val1, val2)//直接新建一个 goroutine 并在 goroutine 中执行代码块go { //do someting...} |
Golang flag 解析入参
flag 是 go 标准库提供的解析命令行参数的包。
使用 flag.String(), Bool(), Int() 等函数注册 flag
123456789 | import "flag"var ip = flag.Int("flagname", 1234, "help message for flagname")// 下面的方式也是可以的var flagvar intfunc () { flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname")} |
自定义 flag
需要实现 flag.Value
interface:
1234 | type Value interface { String() string Set(string) error } |
Example
123456789101112 | type percentage float32 func (p *percentage) Set(s string) error { v, err := strconv.ParseFloat(s, 32) *p = percentage(v) return err } func (p *percentage) String() string { return fmt.Sprintf("%f", *p) }大专栏 Golangs="line">var pop percentageflag.Var(&pop, "pop", "popularity") |
在注册完成之后,最后调用 flag.Parse()
命令行
123 | -flag-flag=x-flag x // 只有非bool类型的flag可以 |
可以使用1个或2个’-‘号,效果是一样的。最后一种格式不能用于 bool 类型的 flag。
来个简单的例子:
123456789101112131415161718192021222324252627 | package mainimport ( "fmt" "flag")func main(){ data_path := flag.String("D","/home/manu/sample/","DB data path") log_file := flag.String("l","/home/manu/sample.log","log file") nowait_flag :=flag.Bool("W",false,"do not wait until operation completes") flag.Parse() var cmd string = flag.Arg(0); fmt.Printf("action : %sn",cmd) fmt.Printf("data path: %sn",*data_path) fmt.Printf("log file : %sn",*log_file) fmt.Printf("nowait : %vn",*nowait_flag) fmt.Printf("-------------------------------------------------------n") fmt.Printf("there are %d non-flag input paramn", flag.NArg()) for i,param := range flag.Args() { fmt.Printf("#%d :%sn",i,param) }} |
参考资料
相关推荐
GoatSucker 2020-11-23
CoderToy 2020-11-16
蛰脚踝的天蝎 2020-11-10
ZGCdemo 2020-11-09
86193952 2020-10-27
Lzs 2020-10-23
hjr 2020-10-21
HELLOBOY 2020-10-21
qidiantianxia 2020-10-21
cmsmdn 2020-10-21
myspace 2020-10-21
笑面依旧 2020-10-21
专注前端开发 2020-10-21
技术之博大精深 2020-10-16
zhushenghan 2020-11-09
风雨断肠人 2020-10-13
xuguiyi00 2020-11-04
sichenglain 2020-10-27