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

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

Golang沖突的命令行標(biāo)志

Golang沖突的命令行標(biāo)志

Go
翻翻過去那場雪 2021-05-21 22:18:30
我在使用gocheck運(yùn)行測試時(shí)遇到了麻煩。我需要向其傳遞一個(gè)標(biāo)志,以指定要運(yùn)行的測試,例如go test -gocheck.f ApiSuite.TestSomeFunction。我的測試文件導(dǎo)入了一個(gè)設(shè)置包,其中有一個(gè)init()函數(shù)指定其自己的標(biāo)志和調(diào)用flag.parseFlags()。我遇到的問題是,這似乎覆蓋了gocheck標(biāo)志,因此我得到一個(gè)錯誤,即無法識別-gocheck.f標(biāo)志。注意:不確定這是否相關(guān),但是僅在我的某些軟件包中發(fā)生,而在其他軟件包中則沒有。我認(rèn)為這只是基于go決定導(dǎo)入軟件包的順序,但是我想我會提到它,以防相關(guān)。還有其他人遇到這個(gè)問題嗎?是否有一種簡單的方法就可以使所有標(biāo)志組合在一起而不會造成混亂,或者使gocheck標(biāo)志優(yōu)先于我的自定義標(biāo)志?
查看完整描述

1 回答

?
慕姐8265434

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

如果有多個(gè)程序包調(diào)用flag.Parse,而不必?fù)?dān)心其他程序包定義了其他標(biāo)志,那么您就很麻煩(就像您已經(jīng)體驗(yàn)到的那樣)?!皹?biāo)志”包的狀態(tài)是全局狀態(tài),因此它幾乎相同,就好像不同的包將在初始化期間競爭將全局變量的值設(shè)置為不同的值一樣。顯然,這可能不會很好地結(jié)束。

防止這種情況的簡單方法:flag.Parse應(yīng)該只調(diào)用一次(在第一次近似中)。這就是通常只在軟件包“ main”中看到它的原因。如果您的非主程序包調(diào)用,flag.Parse則通常會與flag.Parse“主”程序包中的任何調(diào)用沖突。注意,go test合成一個(gè)package main以便測試包和flag.Parse 從該合成“主”包調(diào)用。

另一方面,僅在非主程序包中定義標(biāo)志并依靠flag.Parse其在程序包“主程序”中進(jìn)行調(diào)用會更“安全”(但仍然可能發(fā)生沖突)。在非主程序包中,然后可以flag.Parse使用flag.Parsed()驗(yàn)證已被調(diào)用。

上面寫的簡化的。有關(guān)其他選項(xiàng),請查看包裝標(biāo)志文檔。在某些情況下,例如,可以使用flag.Flagset獲得更多的“力量” ,即,通過對包中的標(biāo)志選項(xiàng)使用本地狀態(tài)。

但是,我個(gè)人不希望以任何方式在包“ main”之外使用包“ flag”,而是通過其API設(shè)置任何可配置的包行為。但是,確實(shí)存在例外,例如在* _test文件或其他特殊情況下。


查看完整回答
反對 回復(fù) 2021-05-24
  • 1 回答
  • 0 關(guān)注
  • 293 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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