スライスの等価性の検証
2 つのスライスが等しいかどうかを比較する場合、標準演算子 == および != を直接使用することはできません。 nil 値の場合にのみ機能します。これに対処するには、reflect.DeepEqual() 関数を使用できます。
スライスの詳細な等価性
DeepEqual() は値の再帰比較を実行し、すべての値が確実に一致するようにします。スライス内の要素が検査されます。スライスについては、次の基準が考慮されます:
コード例
次のコード スニペットは、DeepEqual() を使用してスライスを比較する方法を示しています。
package main import ( "fmt" "reflect" ) func main() { s1 := []int{1, 2} s2 := []int{1, 2} fmt.Println(reflect.DeepEqual(s1, s2)) // Output: true (slices are equal) }
== 演算子との違い
== 演算子とは異なり、DeepEqual() は、基礎となる配列を含むスライスの内部構造を考慮します。したがって、同じ要素を持つ 2 つのインスタンスが同一ではない可能性がある、スライスのようなオブジェクトに対して、より包括的な比較が可能になります。
以上がGo でスライスが等しいかどうかを正しく比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。