Go で要素の順序に関係なく、構造体とネストされたスライスを意味的に比較する方法

WBOY
リリース: 2024-02-10 18:39:10
転載
844 人が閲覧しました

无论 Go 中元素的顺序如何,如何在语义上比较结构与嵌套切片

Go で要素の順序に関係なく、構造とネストされたスライスを意味的に比較する方法はよくある質問です。 Go 言語では、構造体は集合データ型であり、スライスは動的配列です。 PHPエディターのZimoがこの質問に答えます。構造体を比較する場合、すべてのメンバーが同等の型である場合にのみ比較可能です。ネストされたスライスを比較する場合、スライス内の要素をレベルごとに比較する必要があります。スライスの要素タイプが比較できない場合は、再帰的方法を使用してスライスの各要素を比較する必要があります。構造体であっても、ネストされたスライスであっても、要素を反復処理することで要素を比較できます。

質問内容

次の型構造定義を教えてください:

リーリー

すべての階層レベルのスライス要素の順序に関係なく、A の次の 2 つのインスタンスが意味的に等しいかどうかをテストしたいと考えています。

リーリー

アサート比較は true

を返す必要があります 回避策

パッケージ cmpreflect.DeepEqual の更新を目的としています2 つの値を比較して意味上の同一性を確認するための強力で安全な代替手段。

ここでは、すべての階層レベルでのスライス要素の順序に関係なく、意味的等価構造比較の完全な実装を示します。

ファイルsource.go

リーリー

ファイルsource_test.go

リーリー

以上がGo で要素の順序に関係なく、構造体とネストされたスライスを意味的に比較する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!