Go で要素の順序に関係なく、構造とネストされたスライスを意味的に比較する方法はよくある質問です。 Go 言語では、構造体は集合データ型であり、スライスは動的配列です。 PHPエディターのZimoがこの質問に答えます。構造体を比較する場合、すべてのメンバーが同等の型である場合にのみ比較可能です。ネストされたスライスを比較する場合、スライス内の要素をレベルごとに比較する必要があります。スライスの要素タイプが比較できない場合は、再帰的方法を使用してスライスの各要素を比較する必要があります。構造体であっても、ネストされたスライスであっても、要素を反復処理することで要素を比較できます。
次の型構造定義を教えてください:
リーリーすべての階層レベルのスライス要素の順序に関係なく、A の次の 2 つのインスタンスが意味的に等しいかどうかをテストしたいと考えています。
リーリーアサート比較は true
パッケージ cmp は reflect.DeepEqual
の更新を目的としています2 つの値を比較して意味上の同一性を確認するための強力で安全な代替手段。
ここでは、すべての階層レベルでのスライス要素の順序に関係なく、意味的等価構造比較の完全な実装を示します。
ファイルsource.go
リーリーファイルsource_test.go
リーリー以上がGo で要素の順序に関係なく、構造体とネストされたスライスを意味的に比較する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。