美文网首页
Go 带参数的Main方法

Go 带参数的Main方法

作者: 雨生_ | 来源:发表于2019-03-13 16:57 被阅读0次

看一下大名鼎鼎的Hello World

func main() {
    println("Hello world!")
}

比较与C#,Java等变成语言的main方法,Go的没有了args[]数组参数了,是否意味着,启动Go程序的时候,不能通过传入参数来动态控制执行模式了呢?

大部分的企业执行Console程序,都是通过Main函数里面的参数,来控制执行的模式,这个有一定经验的程序员肯定是不陌生的。

Go语言通过另一种方式(flag包),来注入我们想要的参数,简化了main函数。
代码如下:

package main

import "flag"

var name string

func init() {
    flag.StringVar(&name,"name","default","log in user")
}
func main() {
    flag.Parse()//暂停获取参数
    println(name)
}

这里通过Terminal看一下结果:

D:\GoWork\HelloGoStudy\src\Article\MainFunc>go run demo1.go -name Alex
Alex
D:\GoWork\HelloGoStudy\src\Article\MainFunc>go run demo1.go
default

通过上面两个执行的结果就不难看出,flag的方法将name先初始化,然后检查传入的参数,没有的话,就默认是default了。

通过-help方法,我们也可以查看需要传入的参数
这里我加了一个参数password,然后执行下面的命令可以得到:

D:\GoWork\HelloGoStudy\src\Article\MainFunc>go run demo1.go -help
Usage of C:\Users\JIANGY~1\AppData\Local\Temp\go-build714974982\b001\exe\demo1.exe:
  -name string
        log in user (default "default")
  -password string
        log in user's password
exit status 2

细心的小伙伴可能发现了,StringVar 与之类似的还有一个 String 方法,我们看一下源代码吧:

// StringVar defines a string flag with specified name, default value, and usage string.
// The argument p points to a string variable in which to store the value of the flag.
func StringVar(p *string, name string, value string, usage string) {
    CommandLine.Var(newStringValue(value, p), name, usage)
}

// String defines a string flag with specified name, default value, and usage string.
// The return value is the address of a string variable that stores the value of the flag.
func (f *FlagSet) String(name string, value string, usage string) *string {
    p := new(string)
    f.StringVar(p, name, value, usage)
    return p
}

从上面的代码就可以看到,String方法本质上也是调用了StringVar方法,只不过是他帮你创建了接收的String对象,并返回给你了,两者没有差别,按照情况写就可以了。

相关链接

Go 系列学习目录
Package flag API 官方文档
GitHub代码 - HelloGoStudy
代码路径:src/Article/MainFunc/Demo1.go

相关文章

  • Go 带参数的Main方法

    看一下大名鼎鼎的Hello World 比较与C#,Java等变成语言的main方法,Go的没有了args[]数组...

  • Go语言之带参数的main函数

    来自公众号“灰子学技术”,原文链接:https://mp.weixin.qq.com/s/gK-Ubn9WyvFQ...

  • 三、Go的函数

    三、Go的函数 Go语言最少有一个main()函数。 1、Go的函数定义: 2、函数参数 函数如果使用参数,该变量...

  • Go语言命令行和运算符

    命令行参数 在Go语言中main函数是不接收任何参数的, 但是还是可以通过其它方式来接收命令行参数 方法一 导入o...

  • Go race 数据竞争检测

    WEB服务 main.go goods.go 增加 列表 go 启动增加参数 race,检测数据竞争 执行imag...

  • 带参数的main函数

    代码 最终运行的时候会发现命令名也是一个参数,也就是argv[0] 运行 在cmd中运行该程序并传入参数 在pow...

  • int main(int argc, char* argv[])

    main函数的参数,经常用的main函数都是不带参数的。因此main后的括号都是空括号。实际上,main函数可以带...

  • java main方法

    1.main方法是做什么用的? 2.不用main方法如何运行一个类? 3.main方法如何传递参数?传递参数的类型...

  • flutter和java不同的用法

    main方法如下: 1.求和 test0(); 2.带参数的方法 sum("张三","李四"); 3.带有可选...

  • 在上海乐字节学习Java的第十二天

    方法参数的值传递机制main方法的数组参数 参数: 参数类型 String[ ]参数名称:args(argumen...

网友评论

      本文标题:Go 带参数的Main方法

      本文链接:https://www.haomeiwen.com/subject/khstmqtx.html