flag 命令行参数解析,大家可能不太清楚是什么命令行参数解析,不要紧,我们来看看:

他就是干这个活的

 func FlagTest1(){
var username string
var userage int flag.StringVar(&username,"username","default","please input username")
flag.IntVar(&userage,"age",0,"please input userage")
flag.Parse() fmt.Printf("username :%s -- userage : %d",username,userage)
}

很多情况下我们想让flag直接绑定变量,那么可以使用下面这种方式。

 func FlagTest2(){
name := flag.String("name","default","please input name")
age := flag.Int("age",0,"please input age")
flag.Parse()
fmt.Println(fmt.Println(*name,*age))
fmt.Printf("name :%s -- age : %d",*name,*age)
}

下面来看一个综合案例

package main

import (
"bufio"
"flag"
"fmt"
"io"
"os"
"strings"
) func fileExist(filename string)bool{
_,err := os.Open(filename)
return err == nil || os.IsExist(err)
} func copyFile(src,des string)(w int64,err error){
srcFile,err := os.Open(src)
if err != nil{
fmt.Println(err.Error())
return
}
defer srcFile.Close() desFile ,err := os.Create(des)
if err != nil{
fmt.Println(err.Error())
return
}
desFile.Close()
return io.Copy(desFile,srcFile)
} //noinspection ALL
func copyFileAct(src,des string ,sp ,force bool){
if force{
if fileExist(des){
fmt.Printf("%s exists override? y/n\n",des)
reader := bufio.NewReader(os.Stdin)
data,_ ,_:= reader.ReadLine()
if strings.TrimSpace(string(data)) != "y" {
return
}
}
}
copyFile(src,des) if sp {
fmt.Println("a---->b")
}
} func main(){
var sp,force bool flag.BoolVar(&force,"f",false,"是否强制执行.")
flag.BoolVar(&sp,"v",false,"是否显示执行过程.") flag.Parse() if flag.NArg() < 2 {
flag.Usage()
return
} copyFileAct(flag.Arg(0),flag.Arg(1),sp,force) }

有问题可以在下面评论,技术问题可以私聊我

Go语言Flag的简单示例的更多相关文章

  1. Go语言的基准测试简单示例

    测试了三个从数字转换为字符的性能, 高手的感觉.... package listing28_test import ( "fmt" "testing" &quo ...

  2. thrift简单示例 (go语言)

    这个thrift的简单示例来自于官网 (http://thrift.apache.org/tutorial/go), 因为官方提供的例子简单易懂, 所以没有必要额外考虑新的例子. 关于安装的教程, 可 ...

  3. R语言:用简单的文本处理方法优化我们的读书体验

    博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html 前言 延续之前的用R语言读琅琊榜小说,继续讲一下利用R语言做一些简单的文本处理.分词的事情.其实 ...

  4. ACEXML解析XML文件——简单示例程序

    掌握了ACMXML库解析XML文件的方法后,下面来实现一个比较完整的程序. 定义基本结构 xml文件格式如下 <?xml version="1.0"?> <roo ...

  5. Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例

    目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...

  6. [转]Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例

    本文转自:https://www.cnblogs.com/zhongweiv/p/nodejs_koa2_webapp.html 目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装 ...

  7. 用C语言编写一个简单的词法分析程序

    问题描述: 用C或C++语言编写一个简单的词法分析程序,扫描C语言小子集的源程序,根据给定的词法规则,识别单词,填写相应的表.如果产生词法错误,则显示错误信息.位置,并试图从错误中恢复.简单的恢复方法 ...

  8. Python Thrift 简单示例

    本文基于Thrift-0.10,使用Python实现服务器端,使用Java实现客户端,演示了Thrift RPC调用示例.Java客户端提供两个字符串参数,Python服务器端计算这两个字符串的相似度 ...

  9. SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 SignalR 简单示例 通过三个DEMO学会SignalR的三种实现方式 SignalR推送框架两个项目永久连接通讯使用 SignalR 集线器简单实例2 用SignalR创建实时永久长连接异步网络应用程序

    SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论   异常汇总:http://www ...

随机推荐

  1. CodeForces 429B【dp】

    题意: 在一个n*m的矩阵中有两只虫子,一只从左上角向右下角移动,另外一只从左下角向右上角移动. 要求: 1.第一只虫子每次只能向左或者向下移动一格,另外一只只能向上或者向右移动一格. 2.两只虫子的 ...

  2. 清北省选 DAY last 集锦

    这是题目描述的链接: http://lifecraft-mc.com/wp-content/uploads/2018/03/problems1.pdf (虽然这次没去清北,但还是厚颜无耻的做了一下这套 ...

  3. spring mvc技术

                                                     spring mvc之访问路径        1. @RequestMapping这个注解  在实际项 ...

  4. ARM PPC 交叉编译环境搭建

    ARM: 1,下载cross-3.4.1.tar.bz2 2,在/usr/local目录下建立arm目录 3,将cross-3.4.1.tar.bz2拷贝到arm目录下 4,tar jxvf cros ...

  5. Org-mode五分钟教程ZZZ

    Table of Contents 1 源起 2 简介 2.1 获取 org-mode 2.2 安装 3 基础用法 3.1 创建一个新文件 3.2 简单的任务列表 3.3 使用标题组织一篇文章 3.4 ...

  6. 如何在Win7 x64上的配置32位的PostgreSQL ODBC数据源

    在Win7 x64下安装最新版的PostgreSQL 9.x 后,从其官网下载最新的 ODBC驱动,分为普通的32位和64位版本,正常安装后,从已安装软件列表里可以看到两个版本的驱动都已经正确显示出来 ...

  7. FreeFileSync同步定时执行

    Schedule a Batch Job Create a new batch job via FreeFileSync's main dialog: Menu → File → Save as a ...

  8. SQLite Expert表分离和解决SQLite Expert删除表后大小不变的问题

    最后要使用到号码归属地的查询,在网上找到一个数据库文件.大小有12M多,压缩成zip也有1.9M,这样对于一个apk的大小非常不利,后来看了一下数据库的内容,发现有非常多冗余.特别是中文字符占用非常大 ...

  9. Vue调试工具 vue-devtools

    vue-devtools是一款基于chrome浏览器的插件,可以帮我们快速调试vue项目 vue-devtools手动安装: 第一步:找到vue-devtools的github项目(https://g ...

  10. LoadRunner系列之—-01 接口压力测试脚本

    LoadRunner中一般用如下函数进行接口测试: <一>. http或soap协议下的get请求接口,样例如下: web_url("integrated_query.jsp&q ...