命令行参数

对于一些有很多经验或者经常计算机基础比较扎实的人来说这个知识应该是比较基础的,但对于刚入门或者从像从PHP转过来的,之前都写web CURD的童鞋来讲这些知识挺陌生的吧,因为平时虽然我们也会操作命令行也会用一些参数,但是我们却很少写对应的程序。

对于获取命令行的输入我们当然是用上我们的os包,这个包我相信大家一定很熟悉,所有关于系统的信息都是从中获取的,今天我们就用的其中变量Args
我们尝试在程序中执行下面代码

fmt.Printf("%v", os.Args)

我们会发现无论我们在命令后面输入了什么都能获取到

这好像已经能实现我们需要的功能了
在实际生产中只使用这个包却不太方便当我们获取某个参数时可能需要循环遍历才能找到,这极大的降低了我们的开发效率。
所以更常见的是使用flag包,让我们看下面这个例子

var name = flag.String("name", "zyf", "input your name")func main() {flag.Parse()fmt.Printf("welcome %v", *name)
}


当我们输入我们的名字时

当然空格也是可以的

这是你可能回想最后一个参数是干嘛的,从我们代码中其实可以猜到这是个描述这个参数
当我们输入一个不存在参数时就会展示出来

下面我们介绍几个常用的函数

var name = flag.String("name", "zyf", "input your name")
var age = flag.Int("age", 18, "input your age")func main() {var height intflag.IntVar(&height, "tall", 180, "input your age")flag.Parse()fmt.Printf("welcome %v", *name)fmt.Println()fmt.Printf("your age %v", *age)fmt.Println()fmt.Printf("your height %v", height)
}


下面我们来简单的自定义一个flag
自定义flag其实只要实现flag.value的接口就行了

var newValue = ZYFAddFlag("value", 180, "input your value")func main() {fmt.Printf("new value is %v", *newValue)
}type ZYFFlag struct {val int
}
//用于格式化标志对应的值
func (z *ZYFFlag) String() string {return strconv.Itoa(z.val)
}
//其实就是设置值,可以写自己的逻辑
func (z *ZYFFlag) Set(s string) error {val, err := strconv.Atoi(s)if err != nil {return err}z.val = val + 100return nil
}
func ZYFAddFlag(name string, value int, usage string) *int {var f ZYFFlagf.val = valueflag.CommandLine.Var(&f, name, usage)return &f.val
}

总结

flag获取命令行参数非常方便,功能也非常强大,还有很多函数可以自行探索

GO冷门又重要的知识点(一)相关推荐

  1. java中可以用浮点作为循环变量吗_Java千问:Java循环语句的几个冷门知识点你都知道吗?...

    我们在进行Java开发的时候,经常会用到循环结构,但是有几个关于循环的"冷门"知识点,不知道你是不是都已经掌握了呢?我们一起来看看 一.大括号可以不写吗? 我们都知道,如果每次循环 ...

  2. C/C++冷门知识点你知道多少呢?

    在学习C语言的过程中,我们都自己总结了一些重要的知识点,但是有些不常用的冷门知识点可能就被我们选择性忘记了,你要不要来回一下呢? 1:int跟signed int是一回事,short.long亦然,但 ...

  3. python 冷门知识点_Python中的10条冷门知识

    下面时Python中一些不常见的冷门知识,感兴趣的小伙伴不妨来学习一下. 1.省略号也是对象 - 这是省略号,在Python中,一切皆对象.它也不例外.在 Python 中,它叫做 Ellipsis ...

  4. php冷门知识,PHP程序员经常忽略的冷门知识点

    有些时候我们习惯了主流的方法,每一步都按部就班的写代码,殊不知,我们可能会遗漏一些好的想法和知识点,接下来我就谈谈那些容易呗忽略的php知识点. 1. array_filter函数,这个函数是通过回调 ...

  5. c语言冷门小知识,C/C++冷门知识点你知道多少呢?

    原创 zhellow 2019-10-15 在学习C语言的过程中,我们都自己总结了一些重要的知识点,但是有些不常用的冷门知识点可能就被我们选择性忘记了,你要不要来回一下呢? 1:int跟signed ...

  6. c语言冷门小知识,这些C/C++冷门知识点你知道多少呢?来看一下

    在学习C语言的过程中,我们都自己总结了一些重要的知识点,但是有些不常用的冷门知识点可能就被我们选择性忘记了,你要不要来回一下呢? 1:int跟signed int是一回事,short.long亦然,但 ...

  7. Delphi中的冷门知识点

    文章目录 前言 1.assert函数的用法 2.回车符与换行符 3.Sender关键字的妙用 4.nil.Assigned的用法通俗讲解 5.字节数组转换为字符串String 6.array[Bool ...

  8. 大学计算机第四版冷门知识点总结,高校冷门专业大解析,不要小看任何一个“冷门专业”!...

    原标题:高校冷门专业大解析,不要小看任何一个"冷门专业"! 纵观历年来的高考志愿填报,让考生及家长最纠结的总共就那么两件事:一是院校优先还是专业优先:二是众多热门专业选哪个?足可看 ...

  9. pandas 将某一列转换为字符类型_6个冷门但实用的pandas知识点

    1 简介 pandas作为开展数据分析的利器,蕴含了与数据处理相关的丰富多样的API,使得我们可以灵活方便地对数据进行各种加工,但很多pandas中的实用方法其实大部分人都是不知道的,今天就来给大家介 ...

最新文章

  1. 室内设计木地板材质合集包 Arroway – Design Craft Vol.4
  2. 2019年4月第四周_2012年4月最佳怪胎文章
  3. 洛谷——P1305 新二叉树(新建二叉树以及遍历)
  4. python中long类型_浅谈python 四种数值类型(int,long,float,complex)
  5. 大一计算机在线考试,大一计算机考试题(含答案).pdf
  6. 计算机计算能力共享,如何共享计算机的计算能力?
  7. sudo: sorry, you must have a tty to run sudo
  8. ZMQ模式详解——发布/订阅模式
  9. 软件工程java向量相似度计算_向量的相似度计算常用方法9个
  10. 2022-03-23 转载C++中std::auto_ptr被废弃,由std::unique_ptr代替的原因
  11. anaconda下载太慢怎么办_Windows10下anaconda成功运行Cython
  12. HDU 6162 树链剖分
  13. 【概率论基础】机器学习领域必知必会的12种概率分布(附Python代码实现)
  14. GitHub 学习和使用
  15. bzoj1043 下落的圆盘
  16. 小米4刷魅族系统后无服务器,小米4线刷魅族Flyme OS系统的教程_小米4 Flyme OS刷机包...
  17. 2019华为校园大使面试经验
  18. WORD中图片叠加背景融合的方法
  19. stata面板数据gmm回归_GMM估计的Stata操作流程
  20. PositiveUnlabeled Data Learning——第四弹(Semi-Supervised Classification/AUC Optimization)

热门文章

  1. 模块化开发一个电子商务网站
  2. Siemens NX 1965下载及教程
  3. 程序员:怎样才能学好英语?
  4. RtlCopyMemory致使的蓝屏
  5. python开发对电脑要求高吗_学python对电脑配置有要求么
  6. #千锋逆战班,拼搏永向前#
  7. [ UICompatibilityInputViewController ] WillAppear 崩溃处理
  8. tcp协议用来提供什么服务器,关于TCP协议,我想你应该懂了!
  9. 西安国微EDA研发中心正式启动运营;2020上半年10大典型工业网络安全事件 | 美通企业日报...
  10. 微型计算机的特点及其主板构成,第1章 计算机基础知识教案