go语言的引号和获得命令行参数(类似-help 参数那样)
引号作用
1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 func main() { 8 9 fmt.Println("我") //字符串 10 fmt.Println('我') //序号显示 11 fmt.Println(`我 好`) //原样输出 保留原格式 12 }
获得命令行参数
1 package main 2 3 import ( 4 "fmt" 5 "os" 6 ) 7 8 func main() { 9 10 //获得命令行参数: 简易版 11 fmt.Println(os.Args) 12 for i,v := range os.Args{ 13 fmt.Println(i,v) 14 } 15 16 17 18 19 }
运行命令时指定参数(类似-help 这样内容)
1 // go run 02.go -name 小小 -age 90 -rmb 120000 -alive false 2 3 package main 4 5 import ( 6 "flag" 7 "fmt" 8 ) 9 10 func main() { 11 12 //获得命令行参数 13 //定义列名,定义默认数值,定义注释 14 name :=flag.String("name","默认名字","姓氏名谁") 15 age := flag.Int("age",100,"年龄") 16 rmb := flag.Float64("rmb",10000,"资产") 17 alive :=flag.Bool("alive",true,"还活着呢吗") 18 19 //解析胡获取参数 20 flag.Parse() 21 //丢入参数的指针中 22 fmt.Println(*name,*age,*rmb,*alive) 23 24 25 }
重要 定义程序的命令行参数
1 //定义传参数的 定义参数 2 //类似常用的 ./test -file /tmp/file.josn 3 //go run 02.go -name 小小 -age 90 -rmb 120000 -alive false 4 package main 5 6 import ( 7 "flag" 8 "fmt" 9 ) 10 11 func main() { 12 13 var ( 14 name string 15 age int 16 rmb float64 17 alive bool 18 ) 19 20 //获得命令行参数 21 //定义列名,定义默认数值,定义注释 22 flag.StringVar(&name, "name", "默认名字", "姓氏名谁") 23 flag.IntVar(&age, "age", 100, "年龄") 24 flag.Float64Var(&rmb, "rmb", 10000, "资产") 25 flag.BoolVar(&alive, "alive", true, "还活着呢吗") 26 27 //解析胡获取参数 28 flag.Parse() 29 fmt.Println(name, age, rmb, alive) 30 31 }
人格测试例子
1 /* 2 人格测试需求 3 从命令行输入测试者信息如下 4 renge.exe -姓名 xxx -星座 xxx -年龄 40 -人民币 100 -认为自己傻 true 5 keys: 6 人格与资格成正比,与年龄成反比 7 姓名如果在四个字以上,人格成绩*=1.05 8 觉得自己个蠢猪的,人格成绩*=1.1 9 年纪一把,没钱,还觉得自己挺聪明的,人格成绩*=0.8 10 星座:天蝎座,摩羯,水瓶 人格成绩*=1.05 处女座*=0.95 11 人格系数: 以40万/40岁为1 12 13 */ 14 15 package main 16 17 import ( 18 "flag" 19 "fmt" 20 ) 21 22 func main() { 23 score := GetRenge(GetCmdArgs()) 24 fmt.Println("您的评分是", score) 25 26 switch { 27 case score > 90: 28 fmt.Println("膜拜大神66666....") 29 30 case score >= 60 && score < 90: 31 fmt.Println("你很一般....") 32 33 default: 34 fmt.Println("垃圾.....") 35 } 36 37 } 38 39 //人格成绩公式 40 func GetRenge(name, xingzuo string, age, rmb float64, sha bool) (score float64) { 41 42 //姓名如果在四个字以上,人格成绩*=1.05 43 if len(name) > 3*4 { 44 score *= 1.05 45 } 46 47 //星座:天蝎座,摩羯,水瓶 人格成绩*=1.05 处女座*=0.95 48 switch xingzuo { 49 case "天蝎", "天蝎座", "摩羯", "摩羯座", "水瓶", "水瓶座": 50 score *= 1.05 51 case "处女", "处女座": 52 score *= 0.95 53 } 54 55 //觉得自己个蠢猪的,人格成绩*=1.1 56 if sha { 57 score *= 1.1 58 59 } 60 61 //年纪一把,没钱,还觉得自己挺聪明的,人格成绩*=0.8 62 if age > 30 && rmb < 400000 && !sha { 63 score *= 0.8 64 } 65 66 //人格系数: 以40万/40岁为1 67 StdIndex := 1 / (400000.0 / 40.0) 68 69 //人格与资格成正比,与年龄成反比 70 score *= StdIndex * rmb / age 71 return score 72 73 } 74 75 //定义参数命令提示 76 func GetCmdArgs() (name, xingzuo string, age, rmb float64, sha bool) { 77 78 flag.StringVar(&name, "name", "无名氏", "测试者的姓名:") 79 flag.StringVar(&xingzuo, "xingzuo", "无", "测试者的星座:") 80 flag.Float64Var(&age, "age", 0, "测试者的年龄:") 81 flag.Float64Var(&rmb, "rmb", 0, "测试者的财产:") 82 flag.BoolVar(&sha, "sha", true, "是否认为自己傻:") 83 84 flag.Parse() //解析一下 85 return name, xingzuo, age, rmb, sha 86 87 }