1 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊
net.DialTimeout()返回連接和錯(cuò)誤,您正確檢查錯(cuò)誤是否不是nil,但即使有錯(cuò)誤,您只需打印并繼續(xù)。
如果存在非nil錯(cuò)誤,則不應(yīng)(絕不能)使用返回的連接,因?yàn)樗赡苁莕il無(wú)效值。如果有錯(cuò)誤,檢查/打印并返回,不要嘗試使用conn.
所以簡(jiǎn)單地返回:
if err != nil {
result.State = "Closed"
fmt.Printf("%+v\n", result)
return
}
此外,如果沒有錯(cuò)誤,您可以“安排”立即關(guān)閉連接,延遲。defer如果您在函數(shù)中關(guān)閉連接的最后一件事,則使用毫無(wú)意義。
所以它應(yīng)該是這樣的:
conn, err := net.DialTimeout(protocol, socket, 2*time.Second)
if err != nil {
result.State = "Closed"
fmt.Printf("%+v\n", result)
return
}
defer conn.Close()
result.State = "Open"
fmt.Printf("%+v\n", result)
- 1 回答
- 0 關(guān)注
- 115 瀏覽
添加回答
舉報(bào)