2 回答

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊
除了 icza 的答案之外,聽起來(lái)您init()
對(duì)軟件包的使用不正確testing
。
init()
您應(yīng)該定義 function ,而不是使用它來(lái)初始化測(cè)試所需的東西TestMain()
。

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊
規(guī)格:包初始化:
包初始化(變量初始化和 init 函數(shù)的調(diào)用)發(fā)生在單個(gè) goroutine 中,按順序一次一個(gè)包。init 函數(shù)可以啟動(dòng)其他 goroutine,這些 goroutine 可以與初始化代碼同時(shí)運(yùn)行。然而,初始化總是對(duì) init 函數(shù)進(jìn)行排序:在前一個(gè)函數(shù)返回之前,它不會(huì)調(diào)用下一個(gè)函數(shù)。
從函數(shù)啟動(dòng) goroutine 沒有任何問題init()
,但您必須記住這些 goroutine 與初始化過程同時(shí)運(yùn)行,因此例如您不能假設(shè)有關(guān)(當(dāng)前)包的初始化狀態(tài)的任何信息。
如果您看到您的init()
函數(shù)多次運(yùn)行,則很可能是多個(gè)測(cè)試單獨(dú)運(yùn)行。init()
函數(shù)在包的生命周期內(nèi)僅運(yùn)行一次。
- 2 回答
- 0 關(guān)注
- 131 瀏覽
添加回答
舉報(bào)