ホームページ >バックエンド開発 >Golang >Go でスライスが等しいかどうかを正しく比較するにはどうすればよいですか?

Go でスライスが等しいかどうかを正しく比較するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-26 03:58:15778ブラウズ

How Can I Correctly Compare Slices for Equality in Go?

スライスの等価性の検証

2 つのスライスが等しいかどうかを比較する場合、標準演算子 == および != を直接使用することはできません。 nil 値の場合にのみ機能します。これに対処するには、reflect.DeepEqual() 関数を使用できます。

スライスの詳細な等価性

DeepEqual() は値の再帰比較を実行し、すべての値が確実に一致するようにします。スライス内の要素が検査されます。スライスについては、次の基準が考慮されます:

  • 両方のスライスが nil または非 nil である。
  • それらは同じ長さである。
  • どちらかが同じを共有する基礎となる配列、またはそれらの対応する要素が完全に等しい。

コード例

次のコード スニペットは、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。