Goの学習中に、エラー処理の異常な慣行に気付きました。 記事の説明を読んだ後、 エラーは意味であり、 目標「エラーが値である理由」は、そこで提供されたソリューションが、プログラマーが非常に面白くコメントしたVisual Basicの1つの機能を思い出すと述べました。
一番下の行は次のとおりです。 Goでエラーをチェックすることについてプログラマーから苦情があります。 エラーの記事から例を見てみましょう-これらは値です :
_, err = fd.Write(p0[a:b]) if err != nil { return err } _, err = fd.Write(p1[c:d]) if err != nil { return err } _, err = fd.Write(p2[e:f]) if err != nil { return err } // and so on
, , , . , try-catch ?
— :
func (ew *errWriter) write(buf []byte) { if ew.err != nil { return } _, ew.err = ew.w.Write(buf) } w := &errWriter{w: fd} ew.write(p0[a:b]) ew.write(p1[c:d]) ew.write(p2[e:f]) // and so on if ew.err != nil { return ew.err }
, . , .
, , - . Visual Basic If. Visual Basic , .
Visual Basic If C++ Java ?:. , :
Dim a As Integer If CheckState() Then a = 12 Else a = 13 End If
VB : , inline. , , IIf:
a = IIf(CheckState(), 12, 13)
, , . , , IIf , , , , If:
a = IIf(CheckState(), GetTrueAValue(), GetFalseAValue())
, : GetTrueAValue GetFalseAValue. , IIf , If ( ?: ++), .. , , .
, IIf If, IIf , . , .. . , IIf , , , .
If Visual Basic ( ) , . IIf – .
. Go , . , , IIf Visual Basic. :
w := &errWriter{w: fd} ew.write(getAB()) ew.write(getCD()) ew.write(getEF()) // and so on if ew.err != nil { return ew.err }
, : ew.write(getAB()) , getCD() getEF(), ?
? , — , , . Go.
_, err = fd.Write(getAB()) if err != nil { return err } _, err = fd.Write(getCD()) if err != nil { return err } _, err = fd.Write(getEF()) if err != nil { return err }
if. if , . , , .
, ty-catch-finally , , , .
P.S.: VB:
On Error Resume Next
. , .