Last active
February 1, 2019 14:58
-
-
Save 01x01/007cb365e1c2f723593b4478ed1705ea to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"flag" | |
"fmt" | |
"log" | |
"os" | |
"strings" | |
) | |
type Arrays []string | |
func (a *Arrays) String() string { | |
return fmt.Sprintf("%v",*a) | |
} | |
func (a *Arrays) Set(s string) error { | |
*a = strings.Split(s,",") | |
return nil | |
} | |
func main(){ | |
retry := flag.Int("retry",-1,"retry times") | |
params := flag.String("params","","") | |
if *params == ""{ | |
fmt.Println("No params") | |
return | |
}else { | |
fmt.Println(*params) | |
} | |
var logPrefix string | |
flag.StringVar(&logPrefix,"prefix","","logger prefix") // 只接受 string | |
var arr Arrays | |
flag.Var(&arr,"array","input array to iterate through.") // 接受自定义类型 | |
flag.Parse() | |
logger := log.New(os.Stdout,logPrefix,log.Ldate) | |
retryCount := 0 | |
for retryCount < *retry { | |
logger.Println("Retrying connection...") | |
logger.Printf("sending array %v \n",arr[0]) | |
retryCount++ | |
} | |
} | |
/* | |
flag 定义了3种类型函数 | |
1 类似 flag.Int() 函数,返回一个指针,如果你要取得值,还需要 * 取出值 | |
2 类似 flag.xxxVar() 函数,需要提供给它一个指针, | |
3.类似flag.Var() 这个指针类型还需要实现 Set 和 String 方法. 因为这个参数类型是属于 value 的接口 | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment