前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Golang】命令源码文件

【Golang】命令源码文件

作者头像
MaybeHC
发布2024-04-23 19:37:31
1210
发布2024-04-23 19:37:31
举报
文章被收录于专栏:技术之路技术之路

用途

命令源码文件是程序的运行入口,是每个可独立运行的程 序必须拥有的。我们可以通过构建或安装,生成与其对应的可执行文件,后者一般会与该命令源码文件的直接父目录同名。 如果一个源码文件声明属于main包,并且包含一个无参数声明且无结果声明的main函数,那么它就是命令源码文件。

代码语言:javascript
复制
package main
import "fmt"
func main() {
fmt.Println("Hello, world!")
}

当需要模块化编程时,我们往往会将代码拆分到多个文件,甚至拆分到不同的代码包中。但无论怎样,对于一个独立的程序来说,命令源码文件永远只会也只能有一个。如果有与命令源码文件同包的源码文件,那么它们也应该声明属于main包。

接收参数 & 自定义参数说明

我直接用一段代码来说明

代码语言:javascript
复制
package main
import 
(      
        "flag"      
        "fmt"      
        "os"
)


var pwd string
var name string
func init()
{      
    flag.StringVar(&name,"name","admin","The is name.")      
    flag.StringVar(&pwd,"pwd","admin","The is pwd.")}
func main() 
{
    flag.Usage = func() 
    {            
        fmt.Fprintf(os.Stderr,"Usage of %s:\n","question")            
        flag.PrintDefaults()      
    }      
    flag.Parse()      
    fmt.Printf("name=%s , pwd=%s",name,pwd)}
}

执行结果:

在这里插入图片描述
在这里插入图片描述

帮助显示:

在这里插入图片描述
在这里插入图片描述

代码解析:

代码语言:javascript
复制
flag.StringVar(&name,"name","admin","The is name.")      

函数flag.StringVar接受 4 个参数 第 1 个参数是用于存储该命令参数值的地址,具体到这里就是在前面声明的变量name的地址了,由表达式&name表示。 第 2 个参数是为了指定该命令参数的名称,这里是name。 第 3 个参数是为了指定在未追加该命令参数时的默认值,这里是everyone。 至于第 4 个函数参数,即是该命令参数的简短说明了,这在打印命令说明时会用到。

下面这种方式也与之上的相同,一种需要申明,一种直接接受值

代码语言:javascript
复制
var name = flag.String("name", "everyone", "The greeting object.")

代码语言:javascript
复制
    flag.Parse()      

函数flag.Parse用于真正解析命令参数,并把它们的值赋给相应的变量。如果没有使用该函数将不会赋值成功。


代码语言:javascript
复制
     fmt.Fprintf(os.Stderr,"Usage of %s:\n","question")            

该语句用于编写命令源码文件的参数使用说明,我们可以看到使用–help时的输出,就由该语句控制

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 用途
  • 接收参数 & 自定义参数说明
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档