02 | 命令源码文件
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了在Go语言中命令源码文件的重要性以及其用途和编写规则。命令源码文件是程序的运行入口,每个可独立运行的程序都必须拥有命令源码文件。文章详细讨论了命令源码文件如何接收和解析命令参数,以及如何在运行命令源码文件时传入参数和查看参数的使用说明。通过引入`flag`包,读者可以学习如何使用`flag.StringVar`函数来接收命令参数,并通过`flag.Parse`函数进行解析。此外,读者还可以了解如何定制命令参数容器,以及如何让命令源码文件接受不同类型的参数值。总体而言,本文为读者提供了深入学习命令源码文件及相关知识的指导,帮助他们更好地理解和应用Go语言中的命令源码文件。
《Go 语言核心 36 讲》,新⼈⾸单¥59
全部留言(77)
- 最新
- 精选
- 姜雨生置顶flag的讲解很棒,通过这个命令,我们就可以控制程序在不同环境的执行内容了,通过控制参数设置更多的内容!2019-02-2832
- 梦里追逐咱们用的都是哪个IDE?
作者回复: 你好,我用的是goland,但是代码不会依赖于IDE的,只会依赖于Go语言本身。免费的编辑器推荐vs code。
2018-08-157 - 吉祥undefined: os 怎么回事
作者回复: 你好,请到GitHub上下载完整的源码文件。
2018-08-1325 - 传说中的成大大不太明白的地方在于 flag.stringvar 和flag.parse的作用 前面调用了flag.stringvar并且已经传入了name地址 为什么还要再调用一次flag.parse?
作者回复: 前者是“注册”,后者是“处理”。这是两个步骤。“处理”只会针对那些已“注册”的参数。打个比方,你报了个培训班,交了钱、拿到了入场证,这就相当于“注册”。但是你还得去上课,只有去了课堂才能学到东西,这就相当于“处理”。
2020-02-1024 - 弥撒老师好,在执行demo2.go程序运行的时候,我打印了一下init()方法和main()方法的执行顺序,发现init方法先与flag.Parse()这句话之前就运行了,这是什么原因,程序入口不是main方法吗?
作者回复: 有这样一个规则: main 包中的所有 init 函数都会先于 main 函数执行,main 包直接依赖的那些代码包中的 init 函数会先于 main 包中的 init 函数执行,以此类推(与依赖方向完全相反)。
2019-05-254 - mayunian老师,今天试了一下类型转换。 为什么转换var x uint = uint(-1) 的时候会报错? 而var y int = -1 var x uint = uint(y)就不会报错呢?
作者回复: -1是负数,编译器看出来了,帮你挑出来。y是int类型的变量,编译器不知道里面存的是不是负数,没法帮你挑出来。转换会成功结果会不正确。
2018-08-3024 - NEVER SETTLE老师,package name 是不能使用下划线吗,我在用vscode时候,go-lint插件会报这个警告。
作者回复: 依据Go语言规范这样做是没问题的,可以编译通过。只不过这个插件会检查一些“最佳实践”的东西,所以会出现相应的警告。关于Go代码包命名的最佳实践可以参考这篇官方博客:https://blog.golang.org/package-names 。这里还有一篇优秀英文博客的中文翻译,可以供参考:https://studygolang.com/articles/11823 。
2019-04-172 - 但爱老师帮忙解答一下注释中的问题: package main import "flag" import "fmt" var name string // init方法调用时间? func init(){ // 当前方法相当于注册一个钩子 flag.StringVar(&name, "name", "everyone", "put you name.") // flag.String()方法会实时返回参数值,是否做了实时参数解析,如果多次调用,是否是每次执行都解析一遍,效率是否有影响? } func main(){ // 真正解析传递参数的地方,解析到一个参数后,查询是否有对应注册的钩子,如果有,则赋值,顺序 flag.Parse() fmt.Printf("Hello %s!", name) }
作者回复: 解析是在 flag.Parse() 函数中进行的,剩下的你试一下就知道了。
2019-02-222 - 王聪 Claire请问linux下有什么好用的go语言的IDE推荐吗?谢谢。
作者回复: vim、emacs、vscode、liteide
2019-04-251 - 小样??init函数是什么,没地方调用啊。是系统的默认的?
作者回复: 对,是Go语言运行时系统自动调用的,在初始化它所在的代码包的时候。在同一个运行着的程序中,每个代码包中的init函数只会被调用一次。另外每个代码包还可以有多个init函数,而且他们的执行顺序与编写顺序无关。
2019-03-211