我是靠谱客的博主 活泼砖头,最近开发中收集的这篇文章主要介绍Golang 获取命令行参数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

        • os.Args
        • flag.IntVar系列
        • flag.Int系列

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粉丝rn", *name, *age, haveDescription)
}

最后

以上就是活泼砖头为你收集整理的Golang 获取命令行参数的全部内容,希望文章能够帮你解决Golang 获取命令行参数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部