2017-12-09 4 views
1

これは、ファイルパスの質問か、インターフェイスの実装に最適な質問のいずれかです。yaml.v2 Unmarshallerインターフェイスのステートフルな実装?

を考えると、以下の非常にシンプルなYAML:

name: MyYamlName 
data: some/relative/path.txt 

私は、次の構造体にそれを非整列化したいと思います:

type VerySimple struct { 
    name string 
    data io.Reader 
} 

私はすでにyaml.v2 libraryを使用していて、シンプルなタイプのためにそれを知っています私はUnmarshallerインターフェイスを実装できます。しかし、私のプログラムでは、dataフィールドに相対パスの基底となる絶対的なルートを仮定することはできません。

Unmarshallerインターフェイスを実装して作業ディレクトリを渡す方法はありますか、またはGoの相対パスを処理する方法が異なるのでしょうか?

+0

この場合、特にyamlが小さくて単純な場合は、後処理が簡単かもしれないと感じたら、意味は、libにその作業をさせ、あなたの実際のパスに合わせて 'VerySimple.data'を変更するだけです。 – biosckon

答えて

1

API documentationからは、これがサポートされていないことは明らかです。それをサポートする自然な方法であるIMOは、json.Decoderタイプに類似したデコーダタイプになります。これは、ルートインクルードパス、または検索するインクルードパスのリストで初期化することができます。

このような機能にはalready a requestがあります。その特定の機能はまだ明示的に言及されていませんが、おそらくインクルードパスを含めることを意味する複数のドキュメントを扱うことを言及しています。私はそのスレッドであなたのアイデアを提案することをお勧めします。

関連する問題