GoLang中flag标签使用

正如其他语言一样,在 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)
时间: 2024-08-20 11:22:01

GoLang中flag标签使用的相关文章

Go_16:GoLang中flag标签使用

直接上代码,在代码中会做详细的解释,当前运行环境为: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.P

golang中struct成员变量的标签(Tag)说明和获取方式

在处理json格式字符串的时候,经常会看到声明struct结构的时候,属性的右侧还有小米点括起来的内容.形如: type User struct { UserId int `json:"user_id" bson:"user_id"` UserName string `json:"user_name" bson:"user_name"` } 这个小米点里的内容是用来干什么的呢? struct成员变量标签(Tag)说明 要比较详

Golang中使用log(二):Golang 标准库log的实现

前一篇文章我们看到了Golang标准库中log模块的使用,那么它是如何实现的呢?下面我从log.Logger开始逐步分析其实现. 其源码可以参考官方地址 1.Logger结构 首先来看下类型Logger的定义: type Logger struct { mu sync.Mutex // ensures atomic writes; protects the following fields prefix string // prefix to write at beginning of each

Golang中使用log(一):Golang 标准库提供的Log

Golang的标准库提供了log的机制,但是该模块的功能较为简单(看似简单,其实他有他的设计思路).不过比手写fmt. Printxxx还是强很多的.至少在输出的位置做了线程安全的保护.其官方手册见Golang log (天朝的墙大家懂的).这里给出一个简单使用的例子: package main import ( "log" ) func main(){ log.Fatal("Come with fatal,exit with 1 \n") } 编译运行后,会看到程

Go_14:GoLang中 json、map、struct 之间的相互转化

1. golang 中 json 转 struct <1. 使用 json.Unmarshal 时,结构体的每一项必须是导出项(import field).也就是说结构体的 key 对应的首字母必须为大写.请看下面的例子: package commontest import ( "testing" "encoding/json" ) type Person struct { name string age int } func TestStruct2Json(

java 处理html代码 中&lt;p&gt; 标签 保证闭合

需求: 处理一段html代码中<p>标签,使其不嵌套,闭合,无内容暴露在标签之外 例如: 11111<p></p>22222<p>33333</p><p>44444</p>555555<p></p>66666 思维导图: 代码: public static String checkpp(String content){ String Str; int time =0; int pos =0; int

golang中解决tcp传输中的粘包问题

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> golang中解决tcp传输中的粘包问题 - Programmer小卫 - 博客频道 - CSDN.NET Programmer小卫 故不积跬步,无以至千里.不积小流,无以成江海. 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书

golang中的检验hash

1.对字符串进行hash 大家可以看一下, SHA1 Hashes Go by Example写道: The pattern for generating a hash is sha1.New(), sha1.Write(bytes), then sha1.Sum([]byte{}). 附上golang代码 package main import ( "crypto/sha1" "fmt" ) func main() { s := "sha1 this s

Golang 中操作 Mongo Update 的方法

Golang 和 MongoDB 中的 ISODate 时间交互问题 2018年02月27日 11:28:43 独一无二的小个性 阅读数:357 标签: GolangMongoDB时间交互时间转换 更多 个人分类: MongoDBGolang 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010649766/article/details/79385948 MongoDB 中有一种时间格式数据 ISODate,参考如下:  如果在 Golan