title: Go命令传参模块flag使用方法
date: 2022-11-22 19:59:12.0
updated: 2022-12-01 23:22:46.0
url: https://liumou.site/doc/572
categories:

  • GO
    tags:
  • Go

简单使用

Demo

package main

import (
    "flag"
    "fmt"

    "gitee.com/liumou_site/glbm"
)

var (
    server string
    port   int
    passwd string
    net    string
    next   bool
    home   string
)

func main() {
    _, _, _, user_dir := glbm.GetUserInfo(false)
    flag.StringVar(&server, "ip", "10.18.26.1", "设置服务器IP地址")
    flag.IntVar(&port, "port", 80, "设置服务器端口")
    flag.StringVar(&passwd, "pd", "Gxxc@123", "设置系统密码")
    flag.StringVar(&net, "n", "w", "设置网络环境(w/z)")
    flag.BoolVar(&next, "next", false, "是否显示步骤进行手动确认")
    flag.StringVar(&home, "home", user_dir, "设置用户主目录")

    flag.Parse()
    fmt.Println(server)
    fmt.Println(port)
    fmt.Println(next)
}

效果

PS D:\DATA\git\GoLang\GoToinstall> go run .\main.go -h    
Usage of C:\Users\Y\AppData\Local\Temp\go-build771855411\b001\exe\main.exe:
  -home string
        设置用户主目录 (default "C:\\Users\\Y")
  -ip string
        设置服务器IP地址 (default "10.18.26.1")
  -n string
        设置网络环境(w/z) (default "w")
  -next
        是否显示步骤进行手动确认
  -pd string
        设置系统密码 (default "Gxxc@123")
  -port int
        设置服务器端口 (default 80)
PS D:\DATA\git\GoLang\GoToinstall> 
```bash
PS D:\DATA\git\GoLang\GoToinstall> go run .\main.go -next  
10.18.26.1
80
true

设置程序名称

Demo

package main

import (
    "flag"
    "fmt"
    "os"
    "runtime"

    "gitee.com/liumou_site/glbm"
    "gitee.com/liumou_site/gns"
    "gitee.com/liumou_site/logger"
)

var (
    server  string //服务器地址
    port    int    // 服务端口
    passwd  string // 系统密码
    net     string // 网络类型w/z
    next    bool   // 是否手动确认下一步
    home    string // 用户主目录
    browser bool   // 是否打开浏览器
)

func main() {
    _, _, _, user_dir := glbm.GetUserInfo(false)
    gf := flag.NewFlagSet("i", flag.ExitOnError)
    gf.StringVar(&server, "ip", "10.18.26.1", "设置服务器IP地址")
    gf.IntVar(&port, "port", 80, "设置服务器端口")
    gf.StringVar(&passwd, "pd", "123", "设置系统密码")
    gf.StringVar(&net, "n", "w", "设置网络环境(w/z)")
    gf.BoolVar(&next, "next", false, "显示步骤进行手动确认")
    gf.StringVar(&home, "home", user_dir, "设置用户主目录")
    gf.BoolVar(&browser, "b", false, "自动打开网页")
    args := os.Args
    gf.Parse(args[1:])
    // gf.Parse()
    // fmt.Println(args)
    // if len(args) == 0 {
    //  gf.Usage()
    //  return
    // }
    fmt.Println(server)
    fmt.Println(port)
    fmt.Println(next)
    logger.Debug("当前架构", runtime.GOARCH)
    logger.Debug("当前系统", runtime.GOOS)
    net_check := gns.GnsConfig()
    gns.Version()
    net_status := net_check.PingStatus(server)
    if net_status {
        logger.Info("服务器连接正常")
    } else {
        logger.Error("服务器连接异常: ", server)
        // os.Exit(1)
    }
}

效果

liumou@liumou-PC:/media/liumou/Software/DATA/git/GoLang/GoToinstall$ go run main.go -h
Usage of i:
  -b    自动打开网页
  -home string
        设置用户主目录 (default "/home/liumou")
  -ip string
        设置服务器IP地址 (default "10.18.26.1")
  -n string
        设置网络环境(w/z) (default "w")
  -next
        显示步骤进行手动确认
  -pd string
        设置系统密码 (default "Gxxc@123")
  -port int
        设置服务器端口 (default 80)