ホームページ >バックエンド開発 >Golang >Go - ある構造体を別の構造体にマッピングする慣用的な方法

Go - ある構造体を別の構造体にマッピングする慣用的な方法

WBOY
WBOY転載
2024-02-11 20:03:081099ブラウズ

Go - 将一个结构映射到另一个结构的惯用方式

php エディターの Strawberry は、今日よく使用されるテクニックである Go を紹介します。これは、ある構造を別の構造にマッピングする慣用的な方法です。プログラミングでは、さまざまなニーズを満たすために、あるデータ構造を別のデータ構造に変換する必要があることがよくあります。 Go は、この目標を達成するための簡潔かつ柔軟な方法を提供します。データベース クエリの結果、API 応答、またはその他のデータ変換シナリオを処理する場合でも、Go は構造マッピング作業を簡単に完了するのに役立ちます。続いて、Go!の具体的な使い方を学んでいきましょう。

質問の内容

サードパーティの Go 言語ライブラリを使用して、ユーザーの LDAP データベースにクエリを実行しています。ライブラリは、独自のユーザー構造にマップする必要がある searchresult の resultuser スライスを返します。これら 2 つの構造体はフィールド名が異なります。resultuser からの特定のフィールドのみが必要です。ある構造体を別の構造体に変換するためのより慣用的な方法はありますか。

以下のデモを作成しました (go プレイグラウンドにもリンクされています)。この初心者へのアドバイスをよろしくお願いします。

リーリー

構造体フィールドタグを見てきましたが、より良い方法があるかどうかはわかりません。

回避策

あなたが持っているものがほぼ最良の解決策だと思いますが、マッピングを次のような専用関数に移動します。 リーリー

その後、

mapresultstousers は次のようになります: リーリー

構造体フィールドタグを見てきましたが、より良い方法があるかどうかはわかりません。

何かを組み合わせて、次のように

user 構造に注釈を付けることができます。 リーリー ただし、これを実装するには、ここで説明した

fromresultuser

よりもはるかに複雑なアプローチが必要であり、reflect パッケージに精通している必要があります。私の同僚の一人がよく言うように、「ジュースには絞る価値がない」と思います。

以上がGo - ある構造体を別の構造体にマッピングする慣用的な方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。