終端(命令列)操作是程式設計師的必備技能,但是你知道怎麼通過golang製作出如下命令嗎?
$ flag girl -h
usage of girl:
-height int
身高 (default 140)
$ flag girl --height 170
恭喜你獲得了身高 170 的女朋友
整個實現非常簡單,只需要5個步驟
第一步,引庫
import "flag"
第二步,定義變數
定義該變數的作用是儲存命令列引數傳來的值
var height int
第三步,配置命令資訊
在main
函式或init
函式中加入
flag.intvar(&height, "height", 140, "身高")
第四步,解析引數
在main
函式中追加
flag.parse()
第五步,列印變數
在main
函式中追加
fmt.println("恭喜你獲得了身高", height, "的女朋友")
大功告成,感興趣的同學可以自行測試。
完整**
package main
import (
"flag"
"fmt"
)var height int
func main()
支援多種執行方式
在終端執行時,以下幾種傳參方式都被支援
$ girl -height 170
$ girl --height 170
$ girl --height=170
$ girl -height=170
支援多種引數值型別
目前支援字串、布林、整型、浮點、時間等多種型別,完全該所有場景。
布林型別支援多種寫法
雖然布林只有true
或false
,但寫法卻可以各種變種,非常騷氣,支援的寫法有
1, 0, t, f, t, f, true, false, true, false, true, false
隱式處理接收的引數值
如果我要悄悄地把傳入身高減去5厘公尺怎麼辦?
第一步,定義乙個height
型別
type height int
第二步,實現flag.value
介面的兩個方法
func (h *height) string() string
func (h *height) set(value string) error
string
方法用於格式化值,set
方法用於處理變數設定時候的邏輯。
第三步,定義height型別變數
var heightflag height
第四步,主函式配置及解析
func main()
**與極速上手中的主函式內容大致相同,只是呼叫了flag.var
方法,該方法不需要傳入預設值。 Go語言標準庫之flag
go語言內建的flag包實現了命令列引數的解析,flag包使得開發命令列工具更為簡單。如果你只是簡單的想要獲取命令列引數,可以像下面的 示例一樣使用os.args來獲取命令列引數。package main import fmt os os.args demo func main 將上面的 執行go ...
Go語言庫系列之dotsql
dotsql不是orm,也不是sql查詢語句的構建器,而是可以在乙個sql檔案中拎出某幾行來執行的工具,非常類似於ini配置檔案的讀取。如果還不理解,我們來看如下內容。name create users table create table users id integer primary key ...
Go語言標準庫flag基本使用
文章引用自 如果你只是簡單的想要獲取命令列引數,可以像下面的 示例一樣使用os.args來獲取命令列引數。package main import fmt os demo func main 將上面的 執行go build o args demo 編譯之後,執行 args demo a b c d a...