首頁 > 後端開發 > Golang > 主體

如何在 Go 中為值列表定義自訂標誌類型?

Linda Hamilton
發布: 2024-11-16 18:13:03
原創
927 人瀏覽過

How to Define a Custom Flag Type for a List of Values in Go?

在 Go 中將值列表放入 Flag 中

在 Go 中,flag 套件支援解析命令列參數。然而,它最初只提供有限範圍的資料類型(String、Int、Bool)。為了適應更複雜的數據,您可以定義自己的標誌類型並使用 flag.Var() 來綁定它。

列表的自訂標誌類型

考慮一個標誌接受多個值作為列表。首先,定義自訂標誌類型:

type arrayFlags []string

// String is an implementation of the flag.Value interface
func (i *arrayFlags) String() string {
    return fmt.Sprintf("%v", *i)
}

// Set is an implementation of the flag.Value interface
func (i *arrayFlags) Set(value string) error {
    *i = append(*i, value)
    return nil
}
登入後複製

使用自訂標誌

接下來,聲明此類型的變數以與自訂標誌綁定:

var myFlags arrayFlags
登入後複製

註冊自訂Flag

最後,您可以使用flag 套件註冊您的自訂標誌:

flag.Var(&myFlags, "list1", "Some description for this param.")
登入後複製

現在,您可以在執行程式時會向此標誌傳遞多個值:

go run your_file.go --list1 value1 --list1 value2
登入後複製

更新的程式碼片段

供參考,請參考此處完整的程式碼片段:

package main

import (
    "flag"
    "fmt"
)

type arrayFlags []string

// String is an implementation of the flag.Value interface
func (i *arrayFlags) String() string {
    return fmt.Sprintf("%v", *i)
}

// Set is an implementation of the flag.Value interface
func (i *arrayFlags) Set(value string) error {
    *i = append(*i, value)
    return nil
}

var myFlags arrayFlags

func main() {
    flag.Var(&myFlags, "list1", "Some description for this param.")
    flag.Parse()
}
登入後複製

以上是如何在 Go 中為值列表定義自訂標誌類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板