• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Golang 获取命令行参数

武飞扬头像
西直门三太子
帮助1

os.Args

os.Args 返回字符切片,第一个元素是代码编译后后的位置,其余命令行参数排排坐

package main

import (
	"fmt"
	"os"
)

func main() {
	//os.Args 返回字符切片,第一个元素是代码编译后后的位置,其余命令行参数排排坐
	fmt.Println(os.Args)
}
xieruixiangdeMacBook-Pro:JSF xieruixiang$ go run main.go -p=a b c d e f g
[/var/folders/vg/t7pd86zd7wj3p0162861ggyh0000gn/T/go-build3676278252/b001/exe/main -p=a b c d e f g]

flag.IntVar系列

1.flag.IntVar(p1,p2,p3,p4) 接受命令行参数(int) p1:接受参数值的指针*int p2:命令行参数名 p3:默认值(int) p4:说明

2.flag.BoolVar(p1,p2,p3,p4) 接受命令行参数(bool) p1:接受参数值的指针*bool p2:命令行参数名 p3:默认值(bool) p4:说明

3.flag.StringVar(p1,p2,p3,p4) 接受命令行参数(string) p1:接受参数值的指针*string p2:命令行参数名 p3:默认值(string) p4:说明

package main

import (
	"flag"
	"fmt"
)

func main() {
	var age int
	var name string
	var have bool

	// flag.IntVar(p1,p2,p3,p4) 接受命令行参数(int) p1:接受参数值的指针*int p2:命令行参数名 p3:默认值(int) p4:说明
	flag.IntVar(&age, "A", 20, "年龄:age")
	// flag.BoolVar(p1,p2,p3,p4) 接受命令行参数(bool) p1:接受参数值的指针*bool p2:命令行参数名 p3:默认值(bool) p4:说明
	flag.BoolVar(&have, "HH", false, "需要粉丝不:have")
	// flag.StringVar(p1,p2,p3,p4) 接受命令行参数(string) p1:接受参数值的指针*string p2:命令行参数名 p3:默认值(string) p4:说明
	flag.StringVar(&name, "N", "佚名", "名称:name")

	//还有其它的自己去看,比如:flag.Int64Var,flag.Float64Var......

	flag.Parse()
	fmt.Println(have)
	haveDescription := "不需要"
	if have {
		haveDescription = "需要"
	}
	// go run main.go -N=xie -A=28 -HH=true
	// go run main.go -N xie -A 28 -H true
    // go run main.go -N xie -A 28 -H false
	fmt.Printf("我叫%s,今年%d岁,我%s粉丝", name, age, haveDescription)
}
学新通

4.flag.Parse() 参数值才会写入到指针中

5.命令行参数通过-“key”=“value"携带,“=”可以省略

xieruixiangdeMacBook-Pro:JSF xieruixiang$ go run main.go -name=xie -age=28 -have=true
我叫xie,今年28岁,我需要粉丝

#如果是bool类型且省略“=”,那么只要带上 -key 则为true
xieruixiang$ go run main.go -name xie -age 28 -have false
我叫xie,今年28岁,我需要粉丝
xieruixiangdeMacBook-Pro:JSF 

xieruixiangdeMacBook-Pro:JSF xieruixiang$ go run main.go -name xie -age 28 -have=false
我叫xie,今年28岁,我不需要粉丝

6.说明可以通过 -h 来展示

xieruixiangdeMacBook-Pro:JSF xieruixiang$ go run main.go -h
Usage of /var/folders/vg/t7pd86zd7wj3p0162861ggyh0000gn/T/go-build1151936869/b001/exe/main:
  -age int
        年龄:age (default 20)
  -have
        需要粉丝不:have
  -name string
        名称:name (default "佚名")

flag.Int系列

flag.Int系列(a)和flag.IntVar系列(b)差不多, a省略了第一个接受参数的指针(与b差异),返回指针,后续通过指针获取具体的参数值

package main

import (
	"flag"
	"fmt"
)

func main() {

	//flag.Int系列(a)和flag.IntVar系列(b)差不多, a 省略了第一个接受参数的指针(与b差异),返回指针,后续通过指针获取具体的参数值
	age := flag.Int("age", 20, "年龄:age")
	have := flag.Bool("have", false, "需要粉丝不:have")
	name := flag.String("name", "佚名", "名称:name")


	flag.Parse()

	haveDescription := "不需要"
	//指针获取参数值
	if *have {
		haveDescription = "需要"
	}
	// go run main.go -name=xie -age=28 -have=true
	// go run main.go -name xie -age 28 -have true

	//指针获取参数的值
	fmt.Printf("我叫%s,今年%d岁,我%s粉丝\r\n", *name, *age, haveDescription)
}

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfibhi
系列文章
更多 icon
同类精品
更多 icon
继续加载