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 }

 

 

 

posted @ 2019-11-22 10:09  chaoyangxu  阅读(541)  评论(0编辑  收藏  举报