正如其他语言一样,在 linux 系统上通过传入不同的参数来使得代码执行不同逻辑实现不同功能,这样的优点就是执行想要的既定逻辑而不需要修改代码重新编译与打包。在 Golang 语言中也为我们提供了相应的功能,直接上代码,在代码中会做详细的解释,当前运行环境为:Go-1.8.1

package main

import (
"flag"
"log"
"os"
) func usage() {
log.Fatalf("Usage: myProgram [-s server] [-t isShowTimeStamps] <subject> \n")
} func printMsg(message string) {
log.Printf("Received message is : %s \n", message)
} func main() {
//os.Args 提供原始命令行参数访问功能。注意:切片中的第一个参数是该程序的路径,并且 os.Args[1:]保存所有的的参数。
argsAll := os.Args
log.Println("argsAll: ", argsAll)
//取得对我们有意义的参数内容
argsUseful := os.Args[1:]
log.Println("argsUseful: ", argsUseful) /**
第一个参数:设置对应的标签名,可以通过该标签名来或得对应值
第二个参数:如果没有设置该标签,则采用这个值即该值为默认值
第三个参数:这个参数为帮助信息,一般用于help调用展示
*/
var message = flag.String("s", "default message", "it's user send message[help message]")
var showTime = flag.Bool("t", false, "Display timestamps") /**
格式化log输入内容,默认为:log.LstdFlags(底层等价:Ldate | Ltime), Ldate:2017/04/01 , Ltime:16:24:36,
Llongfile:全路径+执行文件+行数, Lshortfile:执行文件名+行数,还有几个其他不常用的,需要的话可以上官方文档查看
这里设置的0即取消log格式化输出,输出的内容和使用fmt包下的println()格式一样
*/
//log.SetFlags(0)
log.SetFlags(log.LstdFlags)
//初始化flag包中内置的匿名Usage函数,需要赋一个函数。当flag内部发生异常会调用其内部的Usage函数,继而再调用到我们自己定义的usage函数
flag.Usage = usage
//所有标志都声明完成以后,调用 flag.parse() 来执行命令行解析
flag.Parse() //用户没有任何参数输入则不得向下执行
args := flag.Args()
if len(args) < 1 {
usage()
} log.Println("message:", *message, ", showTime:", *showTime)
printMsg(*message)

最新文章

  1. .NET FRAMEWORK版本:4.0.30319; ASP.NET版本:4.6.118.0
  2. 织梦cms更新新建的栏目提示:DedeTag Engine Create File False:C:/phpStudy/WWW/
  3. *** missing separator. Stop.
  4. 简单的block
  5. 关于input全选反选恶心的异常情况
  6. MVC实现动态二级域名
  7. Nginx中的rewrite指令
  8. 只用js 实现的简约聊天框
  9. UpdateProgress使用
  10. 单服务员排队模拟100天matlab实现
  11. Android学习笔记:FrameLayout布局基础
  12. java学习笔记09--反射机制
  13. ReactNative环境搭建扩展篇——安装后报错解决方案
  14. Velocity(5)——#macro 指令
  15. 腾讯企业邮箱又一次隐藏了qq邮件列表的入口
  16. HTML5 CSS3 诱人的实例: 3D立方体旋转动画
  17. centos备份多个数据库
  18. 剑指offer7~10题
  19. 框架中如何根据fileupload工具包实现文件上传功能
  20. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 0. 准备工作

热门文章

  1. 1023 Have Fun with Numbers (20)(20 point(s))
  2. Mysql表连接查询
  3. Android中Service与IntentService的使用比较
  4. bzoj 3996 最小割
  5. HDU 5682 zxa and leaf 二分 树形dp
  6. Uva 5002 - The Queue DFS
  7. Windows下ftp服务器搭建及配置
  8. Oracle VM VisualBox 虚拟机创建共享文件夹。
  9. 图解PCB布线数字地、模拟地、电源地,单点接地抗干扰!
  10. Tasker 模拟重复点击按钮