お世話になっております。
しゃまとんです。

去年末にgolangでzeroformatterを作り始めたのを記事にしました。

ありがたいことに、いいねをしてくださっていて嬉しい限りです。
今回はちょっとした進捗報告的な感じです。

今回は前回の記事で課題にしていた、遅延してシリアライズするというものに対応してみました。 どうやればいいかなーともやもや考えていたのですが、一旦やってみるかという感じで実装しました。

DelayDeserializeを呼ぶと、遅延評価用のデシリアライザを生成して返します。使えるのはindexが存在するデータを想定していて、 golangではstructを利用することにしています。対象のデータが大きいときに後から評価したい場合に有効かもしれません。

READMEに簡単に記載しているのですが、下記みたいな感じで使います。
delay deserializeという英語が正しいのか謎です。

package main

import (
  "github.com/shamaton/zeroformatter"
  "log"
)

func how_to_use(b []byte) {
    type Struct struct {
        String string
    }

    r := Struct{}
    dds, _ := zeroformatter.DelayDeserialize(&r, b)

    // 要素を渡してデシリアライズ
    if err := dds.DeserializeByElement(&r.String); err != nil {
        log.Fatal(err)
    }

    // もしくはインデックスを指定してデシリアライズ
    if err := dds.DeserializeByIndex(0); err != nil {
      log.Fatal(err)
    }
}

ちょっとずつ多言語対応拡がってるみたいですね!
対応したくさせるzeroformatterすごいです。

次はタグ指定できるようにしてみるかな。
あ、知見・ご意見・まさかり募集しておりますので、是非ご連絡くださいませ!

以上です。