golang之命令行参数 发表于 2019-05-10 golang之命令行参数 flag 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465package mainimport ( "fmt" "flag")var ( name string help bool)type Person struct { name string}func main() { /** -flag // 只支持bool类型 -flag=x -flag x // 只支持非bool类型 以上语法对于一个或两个‘-’号,效果是一样的 */ // 这种语法默认将返回的是一个指针 复制给&help flag.BoolVar(&help, "h", false, "need help?") // 返回一个相应类型的指针, 输出值要 *age age := flag.Int("age", 25, "this is age") flag.StringVar(&name, "name", "dottie", "this is name") // 这里是关键,解析命令行参数 flag.Parse() fmt.Println(name, *age, help) // 输出默认的所有flag信息 flag.PrintDefaults() /** dottie 25 true -age int this is age (default 25) -h need help? -name string this is name (default "dottie") */ a := 10 var b *int= &a fmt.Println(*b) // 10 p := Person{"dottie"} // {dottie} dottie dottie fmt.Println(p, p.name, (&p).name) var p1 *Person = &p // p1是一个指针变量。里面存放的是地址, // 但是结构体比较特殊,对结构体指针变量 获取其属性时,用结构体变量或者结构体指针变量都可以获取到结构体属性值 // &{dottie} {dottie} dottie dottie fmt.Println(p1, *p1, p1.name, (*p1).name) }