Здравствуйте, Pzz, Вы писали:
Pzz>Pzz>type writer struct {
Pzz> err error // Sticky error
Pzz> . . .
Pzz>}
Pzz>func (w *writer) add(v value) error {
Pzz> if w.err {
Pzz> return w.err
Pzz> }
Pzz> // Do add logic
Pzz> w.err = do_add_logic(...)
Pzz> return w.err
Pzz>}
Pzz>func (w *writer) commit() error {
Pzz> if w.err == nil {
Pzz> w.err = do_commit_logic(...)
Pzz> }
Pzz> return w.err
Pzz>}
Pzz>func add_million_values(w *writer, src source) error {
Pzz> var err error
Pzz> for err == nil {
Pzz> var v value
Pzz> v, err = src.next()
Pzz> if err == nil {
Pzz> err = w.add(v)
Pzz> }
Pzz> }
Pzz> if err == nil {
Pzz> err = w.commit()
Pzz> }
Pzz> return err
Pzz>}
Pzz>func add_grouped_values(w *writer, values vgroup) error {
Pzz> w.add(values.v1)
Pzz> w.add(values.v2)
Pzz> w.add(values.v3)
Pzz> return w.commit()
Pzz>}
Pzz>
Ну говнокод же получился, не? И я уверен, что не только воинствующие здесь сиплюсплюсники так считают, а и представители других ЯП.
То есть, технически-то написанное логично, но из-за Go и их
тупости — как бы тут ни написали, получается говнокод.