GoおよびVB Echoの「エラーは値」

Fateは私(主にC#を使用する実践プログラマー)に、Goで主な機能が開発されているプロジェクトをもたらしました。



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

      
      





. , .



All Articles