#第一种:
func main ( ) {
if len ( os. Args) < 0 {
return
}
fmt. Printf ( "====%s====\n" , os. Args[ 1 ] )
fmt. Printf ( "====%s====\n" , os. Args[ 2 ] )
fmt. Printf ( "====%s====\n" , os. Args[ 3 ] )
fmt. Printf ( "%s\n" , os. Args)
}
#第二种
func main ( ) {
var age, name string
fmt. Scan ( & name, & age)
fmt. Printf ( "my name is %s,i am %s years old .\n" , name, age)
fmt. Printf ( "%s\n" , os. Args)
}
func main ( ) {
var age, name string
fmt. Scanf ( "%s,%s" , & name, & age)
fmt. Printf ( "my name is %s,i am %s years old .\n" , name, age)
fmt. Printf ( "%s\n" , os. Args)
}
#第三种
func main ( ) {
scanner := bufio. NewScanner ( os. Stdin)
scanner. Scan ( )
if err := scanner. Err ( ) ; err != nil {
fmt. Fprintln ( os. Stderr, "error:" , err)
}
line := scanner. Text ( )
fmt. Printf ( "bufio.NewScanner:%q\r\n" , scanner. Text ( ) )
data := strings. Split ( line, " " )
fmt. Println ( data)
}
#第四种 正常的开发中上面的三种都不常用,flag包的机制是最哦常用的
type option struct {
EtcdendPoints [ ] string
Version bool
Fore bool
}
func ( p * option) Output ( ) {
fmt. Println ( "Args parse result: etcdendpoint:" , p. EtcdendPoints, ", is fore:" , p. Fore, ", show version:" , p. Version)
}
func dealWithOsArgs ( ) * option {
var etcdendPoints string
flag. StringVar ( & etcdendPoints, "e" , "127.0.0.1:2379" , " -e [ip]:[port]" )
version := flag. Bool ( "v" , false , "Displays current version confidence" )
fore := flag. Bool ( "f" , false , "default daemon false" )
flag. Usage = func ( ) {
fmt. Printf ( "Usage of %s:\n" , os. Args[ 0 ] )
fmt. Printf ( " example7 file1 file2 ...\n" )
flag. PrintDefaults ( )
}
flag. Parse ( )
fmt. Printf ( "other args: %+v\n" , flag. Args ( ) )
if * version {
fmt. Println ( "" )
fmt. Println ( "" )
OutputVersionInfo ( )
fmt. Println ( "exit" )
os. Exit ( 0 )
}
etcd := fmt. Sprintf ( "%v" , etcdendPoints)
endPoints := make ( [ ] string , 0 )
endPoints = append ( endPoints, etcd)
return & option{
Version: * version,
Fore: * fore,
EtcdendPoints: endPoints,
}
}
func main ( ) {
opt := dealWithOsArgs ( )
opt. Output ( )
}