Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Satu artikel akan membimbing anda melalui penggunaan pakej bendera dalam bahasa Go

Satu artikel akan membimbing anda melalui penggunaan pakej bendera dalam bahasa Go

Go语言进阶学习
Go语言进阶学习ke hadapan
2023-07-20 14:07:591442semak imbas
Kali ini, mari kita bercakap tentang salah satu pakej yang lebih biasa digunakan dalam bahasa Gobenderaflag包。

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

如果你玩过Mysql pakej.

Satu artikel akan membimbing anda melalui penggunaan pakej bendera dalam bahasa GoTujuan pakej ini adalah untuk menerima parameter baris arahan.

jika Pernahkah anda bermain Mysql

, anda mesti biasa dengan antara muka ini


🎜🎜Ya, Itulah gunanya, menerima parameter baris arahan. 🎜🎜🎜🎜🎜🎜🎜🎜. awal;lebar sempadan: 1px;gaya sempadan: pepejal;warna sempadan: rgb(231, 234, 237);warna latar belakang: rgb(243, 244, 244);jejari sempadan: 3px;padding-kanan: 2px;padding-left: 2px;font-size: 0.9em;">.exe

才能跑,禁止

右击 run

!!

Satu artikel akan membimbing anda melalui penggunaan pakej bendera dalam bahasa Go.exe

才能跑,禁止右击 run!!

Satu artikel akan membimbing anda melalui penggunaan pakej bendera dalam bahasa Go


os.Args

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

不能接收像-u root -p 3306这样指定key的值,只能接收像root 3306


os.Args

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

🎜不能接收像🎜🎜-u root -p 3306🎜🎜这样指定🎜🎜kunci🎜🎜的值,🎜🎜只能接收像🎜root 3306🎜🎜这样的方式。🎜简单了解一下吧。🎜. : 1px;gaya sempadan: pepejal;warna sempadan: rgb(231, 234, 237);warna latar belakang: rgb(243, 244, 244);jejari sempadan: 3px;padding-kanan: 2px;padding-left : 2px;font-size: 0.9em;">go build -o mysql.exe main.go

编译成一个mysql.exe


Satu artikel akan membimbing anda melalui penggunaan pakej bendera dalam bahasa Go

mysql.exe图

Satu artikel akan membimbing anda melalui penggunaan pakej bendera dalam bahasa Gogo build -o mysql.exe main.go

编译成一个mysql.exe

Satu artikel akan membimbing anda melalui penggunaan pakej bendera dalam bahasa Go

mysql.exe图

Satu artikel akan membimbing anda melalui penggunaan pakej bendera dalam bahasa Go

执行结果

Satu artikel akan membimbing anda melalui penggunaan pakej bendera dalam bahasa Go

注:返回的cmdArgs

执行结果

Satu artikel akan membimbing anda melalui penggunaan pakej bendera dalam bahasa Go

注:

返回的cmdArgs是一个切片,第一个值是自己的🎇己的🐇中城朎城不想要自己第一个值,直接切片就好了。

🎜修改🎜🎜🎜第2行🎜🎜🎜代码。🎜代码。
cmdArgs := os.Args[1:]

执行结果

Satu artikel akan membimbing anda melalui penggunaan pakej bendera dalam bahasa Go


flag

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

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

  • bool

  • int int系列(intint64uintuint64)

  • float系列(floatfloat64)

  • string

  • duration系列(

    int🎜,🎜🎜int64🎜,🎜🎜uint🎜,🎜🎜uint64🎜)🎜🎜🎜🎜

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

    🎜string🎜🎜🎜🎜

    🎜tempoh🎜🎜

注意

使用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)
}

执行结果

Satu artikel akan membimbing anda melalui penggunaan pakej bendera dalam bahasa Go

.exe -h结果图

Satu artikel akan membimbing anda melalui penggunaan pakej bendera dalam bahasa 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)
}

执行结果

Satu artikel akan membimbing anda melalui penggunaan pakej bendera dalam bahasa 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())
}

执行结果

Satu artikel akan membimbing anda melalui penggunaan pakej bendera dalam bahasa Go


Ringkasan

Perkara utama yang perlu dipelajari dalam bab ini ialahflag包的使用,flag包主要处理的命令行参数传递问题。

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

flag主要有flag.Typeflag.TypeVarbenderaPenggunaan pakej,

flagpakej 🎜🎜 terutamanya mengendalikan isu lulus parameter baris arahan. 🎜🎜

🎜Ya Dengan ini kita boleh membangunkan sesuatu seperti 🎜🎜mysql🎜🎜Program sedemikian. 🎜🎜

🎜bendera🎜 🎜Terutamanya termasuk🎜🎜 flag.Type🎜🎜 dan 🎜🎜flag.TypeVar🎜🎜Dua perbezaan🎜🎜

  • bendera .Taipflag.Type出来的变量是指针类型,需要用*变量名才能取值

  • flag.TypeVar出来的变量是指针类型,需要用*变量名

  • 才能取值

🎜🎜

🎜flag.TypeVar🎜🎜出来的变量直接就是标凐)揘量🎜

Atas ialah kandungan terperinci Satu artikel akan membimbing anda melalui penggunaan pakej bendera dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:Go语言进阶学习. Jika ada pelanggaran, sila hubungi admin@php.cn Padam