• Go语言Flag的简单示例


    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
    ",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)
    
    }
    

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

  • 相关阅读:
    深度学习时代的图模型,清华发文综述图网络
    深入解析CNN pooling 池化层原理及其作用
    如何理解线性回归中的“回归”,回归到哪里?
    线性回归中“回归”的含义
    深度学习基础——Epoch、Iteration、Batchsize
    手动清空微信PC客户端数据
    Mini-batch 和batch的区别
    Python中绘制场景热力图
    HSV颜色识别-HSV基本颜色分量范围
    Android拨打接听电话自动免提
  • 原文地址:https://www.cnblogs.com/c1024/p/11011992.html
Copyright © 2020-2023  润新知