>  기사  >  백엔드 개발  >  Go 언어로 플래그 패키지를 사용하는 방법을 안내하는 기사가 있습니다.

Go 언어로 플래그 패키지를 사용하는 방법을 안내하는 기사가 있습니다.

Go语言进阶学习
Go语言进阶学习앞으로
2023-07-20 14:07:591442검색
이번에는 Go 언어에서 가장 일반적으로 사용되는 패키지 중 하나에 대해 이야기해 보겠습니다플래그flag包。

这个包的用途是接收命令行参数的。

如果你玩过Mysql 패키지.

Go 언어로 플래그 패키지를 사용하는 방법을 안내하는 기사가 있습니다. 이 패키지의 목적은 명령줄 매개변수를 수신하는 것입니다.

if Mysql

, 이 인터페이스에 익숙해야 합니다


🎜🎜예, 이것이 바로 명령줄 매개변수를 수신하기 위한 것입니다. 🎜🎜🎜🎜🎜🎜🎜🎜

注의의

这一章所학적인任何代码,도要编译成.exe.exe才能跑,禁止右击 run!!

Go 언어로 플래그 패키지를 사용하는 방법을 안내하는 기사가 있습니다.


os.Args

其实Go的os模块,也带有这个功能,但是这个功能有点欠缺。

不能接收像-u root -p 3306这样指定key的值,只能接收像root 3306才能跑,禁止右击 실행

🎜!!🎜🎜

Go 언어로 플래그 패키지를 사용하는 방법을 안내하는 기사가 있습니다.🎜


🎜

🎜os.Args🎜
🎜

🎜其实Go的os模块,也带有这个功能,但是这个功能有点欠缺。🎜🎜

🎜不能接收image🎜🎜-u 루트 -p 3306🎜🎜这样指정🎜🎜🎜🎜的值,🎜🎜只能接收이미지🎜루트 3306🎜🎜这样的方式。🎜简单了解一下吧。🎜

代码

func main() {
    cmdArgs := os.Args
    if len(cmdArgs) > 0 {
        for index, value := range cmdArgs {
            fmt.Printf("索引:%v,value值:%v\n", index, value)
        }
}
}

我们过命令go build -o mysql.exe main.gogo build -o mysql.exe main.go编译成一个mysql.exe

Go 언어로 플래그 패키지를 사용하는 방법을 안내하는 기사가 있습니다.

mysql.exe图

Go 언어로 플래그 패키지를 사용하는 방법을 안내하는 기사가 있습니다.

执行结果

Go 언어로 플래그 패키지를 사용하는 방법을 안내하는 기사가 있습니다.

注:返回的cmdArgs编译成一个mysql.exe

Go 언어로 플래그 패키지를 사용하는 방법을 안내하는 기사가 있습니다.

mysql.exe图

Go 언어로 플래그 패키지를 사용하는 방법을 안내하는 기사가 있습니다.

执行结果

Go 언어로 플래그 패키지를 사용하는 방법을 안내하는 기사가 있습니다.

注:🎜🎜🎜返回的🎜🎜cmdArgs🎜🎜是一个切 Pictures第一个值,直接切分就好了。🎜🎜🎜🎜修改🎜🎜🎜第2行🎜🎜🎜代码。🎜🎜
cmdArgs := os.Args[1:]

执行结果

Go 언어로 플래그 패키지를 사용하는 방법을 안내하는 기사가 있습니다.


flag

上述的可能也发现问题了,只能接收简单的值,不能接收key value这种。

flag可以做到,flag有只能接收以下几种类型

  • bool

  • int int系列(intint64uintuint64)

  • float系列(floatfloat64)

  • string

  • duration系列(

    int🎜,🎜🎜int64🎜,🎜🎜단위🎜,🎜🎜uint64🎜)🎜🎜🎜🎜

    🎜float🎜系列(🎜🎜부동🎜,🎜🎜float64🎜)🎜🎜🎜🎜

    🎜문자열🎜🎜🎜🎜

    🎜기간🎜🎜

注意

使用flag包,最后要使用flag.Parse()转换一下才能获取命令行参数。

flag.Type()

话不多说,直接代码

func main() {
    // 第一个参数是命令行key,第二个参数是默认是,第三个参数是 .exe -h 提示
    var user = flag.String("user", "root", "用户名")
    var port = flag.Int("port", 3306, "端口")
    var ip = flag.String("ip", "localhost", "mysql ip")

    //必须使用flag.Parse()解析一下命令行参数
    flag.Parse()
    //flag.Type返回的是一个指针,必须通过 *变量取值
    fmt.Println(*user,*port,*ip)
}

执行结果

Go 언어로 플래그 패키지를 사용하는 방법을 안내하는 기사가 있습니다.

.exe -h结果图

Go 언어로 플래그 패키지를 사용하는 방법을 안내하는 기사가 있습니다.

懂了叭,你今天,学废了吗!

flag.TypeVar()

上述你可能也发现了问题,需要用*变量才能取到值,是不是感觉不太方便,那就来看看flag.TypeVar()

func main() {
    //声明变量用于接收命令行参数
    var user string
    var port int
    var ip string

    //从命令行扫描参数赋值到变量
    flag.StringVar(&user, "user", "root", "用户名")
    flag.IntVar(&port, "port", 3306, "端口")
    flag.StringVar(&ip, "ip", "localhost", "mysql ip")

    //必须使用flag.Parse()解析一下命令行参数
    flag.Parse()
    //flag.Type返回的是一个指针,必须通过 *变量取值
    fmt.Println(user, port, ip)
}

执行结果

Go 언어로 플래그 패키지를 사용하는 방법을 안내하는 기사가 있습니다.

flag其他方法

flag还有一些其他无关紧要的方法,了解就好。

func main() {
    //声明变量用于接收命令行参数
    var user string
    var port int
    var ip string

    //从命令行扫描参数赋值到变量
    flag.StringVar(&user, "user", "root", "用户名")
    flag.IntVar(&port, "port", 3306, "端口")
    flag.StringVar(&ip, "ip", "localhost", "mysql ip")

    //必须使用flag.Parse()解析一下命令行参数
    flag.Parse()
    //flag.Type返回的是一个指针,必须通过 *变量取值
    fmt.Println(user, port, ip)
    ///////////////// 其他方法
    //返回命令行参数后的其他参数
    fmt.Println(flag.Args())
    //返回命令行参数后的其他参数个数
    fmt.Println(flag.NArg())
    //返回使用的命令行参数个数
    fmt.Println(flag.NFlag())
}

执行结果

Go 언어로 플래그 패키지를 사용하는 방법을 안내하는 기사가 있습니다.


요약

이 장에서 배울 주요 내용은flagflag包的使用,flag包主要处理的命令行参数传递问题。

有了这个我们就能开发出像mysql那样的程序。

flag主要有flag.Typeflag.TypeVar패키지 사용, flag

🎜 패키지는 주로 명령줄 매개변수 전달 문제를 처리합니다. 🎜🎜

🎜예 이를 통해 우리는 🎜🎜mysql🎜🎜이런 프로그램이군요. 🎜🎜

🎜플래그🎜 🎜주로 포함🎜🎜 flag.Type🎜🎜 및 🎜🎜flag.TypeVar🎜🎜두 가지 차이점🎜🎜

  • 플래그 .Typeflag.Type出来的变量是指针类型,需要用*变量名才能取值

  • flag.TypeVar 流来的变weight是指针类型,需要用*크기 크기

  • 才能取值

🎜🎜

🎜flag.TypeVar🎜🎜atural 变weight直接就是标准变weight(推荐)🎜🎜🎜🎜🎜

위 내용은 Go 언어로 플래그 패키지를 사용하는 방법을 안내하는 기사가 있습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 Go语言进阶学习에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제