第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在 GoLang 中取消設(shè)置在命令行上訪問(wèn)的標(biāo)志以進(jìn)行測(cè)試

如何在 GoLang 中取消設(shè)置在命令行上訪問(wèn)的標(biāo)志以進(jìn)行測(cè)試

Go
ABOUTYOU 2023-07-26 13:31:03
我正在嘗試運(yùn)行每次使用不同參數(shù)多次調(diào)用同一函數(shù)的測(cè)試。這是一個(gè)接受不同命令行標(biāo)志的應(yīng)用程序。如果未提供命令行標(biāo)志,則使用默認(rèn)值。flagset = make(map[string]bool)flagset["flag1"] = falseflagset["flag2"] = falseflagset["flag3"] = falseflagset["flag4"] = falsefunc LoadCommandLineArguments(args []string) error{        err := flag.CommandLine.Parse(args)        /*Do error handling         */       flag.Visit(func(f *flag.Flag) { flagset[f.Name] = true })       // Iterate through all the flags and set their default values whatever was not passed on the commandline.}func resetFlags(){/* Reset flag variables to their original default values and set map values to false */flagset["flag1"] = falseflagset["flag2"] = falseflagset["flag3"] = falseflagset["flag4"] = false}我有不同的測(cè)試函數(shù),每個(gè)函數(shù)都為測(cè)試提供不同的標(biāo)志。例如:這就是我的測(cè)試文件的樣子func TestFlag1(t *testing.T) {   resetFlags()   err := LoadCommandLineArguments([]string{"-flag1=somevalue1"})}func TestFlag2(t *testing.T) {resetFlags()err := LoadCommandLineArguments([]string{"-flag2=somevalue2"})}func TestFlag3(t *testing.T) {resetFlags()err := LoadCommandLineArguments([]string{"-flag3=somevalue3"})}func TestFlag4(t *testing.T) {resetFlags()err := LoadCommandLineArguments([]string{""})}每當(dāng)我單獨(dú)運(yùn)行測(cè)試文件和每個(gè)單元測(cè)試時(shí),它們似乎都工作正常。但是當(dāng)我一起運(yùn)行整個(gè)文件測(cè)試文件時(shí),當(dāng)它到達(dá) testFlag4 時(shí),在 LoadCommandLineArguments 中,它會(huì)訪問(wèn)所有標(biāo)志并認(rèn)為所有標(biāo)志都在命令行上傳遞,即使我在每個(gè)測(cè)試函數(shù)開(kāi)始時(shí)重置它們。在 TestFlag1 中,它認(rèn)為 flag1 已通過(guò)。在 TestFlag2 中,它認(rèn)為 flag1 和 flag2 已通過(guò)。在TestFlag3中,它認(rèn)為flag1、flag2、flag3通過(guò)了。同樣,在TestFlag4中,它認(rèn)為flag1也通過(guò)了,flag2也通過(guò)了,flag3也通過(guò)了,而我什么也沒(méi)通過(guò)。我希望這個(gè)測(cè)試沒(méi)有通過(guò)任何命令行標(biāo)志。flags.Visit 函數(shù)對(duì)于任何標(biāo)志都不應(yīng)該為 true。我知道通過(guò)將我的地圖值設(shè)置為 false,我實(shí)際上并沒(méi)有取消設(shè)置傳遞的命令行值,但是如何做到這一點(diǎn)呢?有沒(méi)有辦法在 Golang 中取消訪問(wèn)/取消設(shè)置命令行標(biāo)志?任何幫助將不勝感激。謝謝。
查看完整描述

1 回答

?
慕尼黑5688855

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊

根據(jù)標(biāo)志的源代碼,這應(yīng)該可以工作(您需要將操作系統(tǒng)添加到導(dǎo)入中):

flag.CommandLine?=?flag.NewFlagSet(os.Args[0],?flag.ExitOnError)?//flags?are?now?reset

另外,就風(fēng)格而言,還有一些事情:

當(dāng)未找到鍵時(shí),映射會(huì)返回默認(rèn)值。所以所有這些初始化/重置行都可以刪除。

flagset = make(map[string]bool)

// the initialization lines are not needed; bool already initalizes to false:

//flagset["flag1"] = false

//...


func LoadCommandLineArguments(args []string) error{

? ?//...

}


func resetFlags(){

? ?/* Reset flag variables */

? ?flagset = make(map[string]bool)//just make a new map

}


查看完整回答
反對(duì) 回復(fù) 2023-07-26
  • 1 回答
  • 0 關(guān)注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)