Go語言 獲取命令列引數

2021-09-12 22:18:22 字數 1494 閱讀 5344

想知道更多區塊鏈技術,請搜尋【鏈客區塊鏈技術問答社群】

鏈客,有問必答!!

1.flag庫的使用

go語言標準庫提供了用於快迅解析命令列引數的flag包,大致的使用步驟如下:

a.通過flag.string(), flag.bool(), flag.int()等方式來定義命令列中需要使用的引數。

b.在定義完flag後,通過呼叫flag.parse()來進行對命令列引數的解析。

c.獲取flag.string(), flag.bool(), flag.int()等方法的返回值,即對應使用者輸入的引數.

需要注意的是flag.***()返回的值是變數的記憶體位址,要獲取值時要通過在變數前加*(星號)獲取.

說明:像flag.int、flag.bool、flag.string這樣的函式格式都是一樣的,呼叫的時候需要傳入3個引數

引數的說明如下:

第乙個arg表示引數名稱,在控制台的時候,提供給使用者使用.

第二個arg表示預設值,如果使用者在控制台沒有給該引數賦值的話,就會使用該預設值.

第三個arg表示使用說明和描述,在控制台中輸入-arg的時候會顯示該說明,類似-help

看個完整的使用例子:

package main

import (

"flag"

"fmt"

)

func main()

執行結果: 

從執行結果中可以看出,address引數我們並沒有指定值,則輸出的就是預設值.

另外,-arg後面的=號也不是必須的,可以用空格代替.

如果要檢視該程式的所有引數的使用,可以使用-help來檢視,如下:

2.os庫的使用

直接看例子

package main

import (

"os"

"fmt"

)

func main()

name := args[1] //獲取輸入的第乙個引數

age := args[2] //獲取輸入的第二個引數

fmt.println("your name is:",name,"\nyour age is:",age)}var usage = func() {

fmt.println("you name?");

fmt.println("you age?");

執行結果: 

"fmt"
[理論]

&符號的意思是對變數取位址,如:變數a的位址是&a

符號的意思是對指標取值,如:&a,就是a變數所在位址的值,當然也就是a的值了

[簡單的解釋]

和 & 可以互相抵消,同時注意,&可以抵消掉,但&是不可以抵消的 a和&a是一樣的,都是a的值,值為1 (因為*&互相抵消掉了)

同理,a和&&&&a是一樣的,都是1 (因為4個*&互相抵消掉了)

Go語言 獲取命令列引數

部署golang專案時難免要通過命令列來設定一些引數,那麼在golang中如何操作命令行引數呢?可以使用flag庫和os庫。1.flag庫的使用 go語言標準庫提供了用於快迅解析命令列引數的flag包,大致的使用步驟如下 a.通過flag.string flag.bool flag.int 等方式來...

Go語言 flag Go的命令列引數 命令列處理

1.命令列引數 命令列引數是指定程式執行引數的乙個常見方式。例如,go run hello.go,程式 go 使用了 run 和 hello.go 兩個引數。package main import os import fmt func main 要實驗命令列引數,最好先使用 go build 編譯乙...

命令列引數的作用 go 命令列引數

使用 flag 包獲取命令列引數,控制程式執行 主要函式 flag.string flag.strin ar flag.int flag.intvar flag.float64 flag.float64var flag.bool flag.boolvar p2,p3 p1 命令列引數標誌,flag ...