English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golang 基礎教程

Golang 制御文

Golang ファンクション & メソッド

Golang 構造体

Golang スライス & 配列

Golang 文字列(String)

Golang ポインタ

Golang インターフェース

Golang 並行処理

Golang エラ(Error)

Golang その他の雑多

Go 構造体の比較

Golangの構造体(struct)はユーザー定義の型で、一つのユニットで異なるタイプの要素を一組作成することができます。属性やフィールドを持つ実際の実体は構造体で表現できます。この概念は、面向オブジェクトプログラミングのクラスと比較されます。軽量なクラスと呼ばれ、継承をサポートしていませんが、組合をサポートしています。

Go言語では、以下のように使用できます。==演算子またはDeeplyEqual()メソッド同じタイプの構造を持ち、同じフィールド値を含む構造を比較します。構造が互いに等しい場合(フィールド値に関して)、演算子とメソッドはすべてtrueを返します;そうでない場合、falseを返します。また、比較する変数が異なる構造の場合、コンパイラはエラーを出します。この概念について例を示して説明しましょう:

注意: DeeplyEqual()メソッドは"reflect"パッケージで定義されています。

==演算子を使用して構造体が等しいか比較

//構造体が等しい概念
//==演算子の使用
package main
import "fmt"
//構造体の作成
type Author struct {
    name      string
    branch    string
    language  string
    Particles int
}
func main() {
    //変数の作成
    //作者構造体
    a1 := Author{
        name:      "Moana",
        branch:    "CSE",
        language:  "Python",
        Particles: 38,
    }
    a2 := Author{
        name:      "Moana",
        branch:    "CSE",
        language:  "Python",
        Particles: 38,
    }
    a3 := Author{
        name:      "Dona",
        branch:    "CSE",
        language:  "Python",
        Particles: 38,
    }
    //を==演算子でチェック1とa2が等しいか
    if a1 == a2 {
        fmt.Println("変数a1変数aが等しい場合2)")
    } else {
        fmt.Println("変数a1変数aが不等しい場合2)")
    }
    if a2 == a3 {
        fmt.Println("変数a2変数aが等しい場合3)")
    } else {
        fmt.Println("変数a2変数aが不等しい場合3)")
    }
}

出力:

変数a1変数aが等しい場合2
変数a2変数aが不等しい場合3

DeepEqual()メソッドを使用して構造体が等しいか比較

//DeepEqual()メソッドの使用
package main
import ("
    "fmt"
    "reflect"
)
//構造体の作成
type Author struct {
    name      string
    branch    string
    language  string
    Particles int
}
func main() {
    //変数の定義
    //作者構造体
    a1 := Author{
        name:      "Soana",
        branch:    "CSE",
        language:  "Perl",
        Particles: 48,
    }
    a2 := Author{
        name:      "Soana",
        branch:    "CSE",
        language:  "Perl",
        Particles: 48,
    }
    a3 := Author{
        name:      "Dia",
        branch:    "CSE",
        language:  "Perl",
        Particles: 48,
    }
    //を比較1とa2,Deep Equal()メソッドを使用
    fmt.Println("a1aに等しい2ですか: ", reflect.DeepEqual(a1, a2))
    //を比較2とa3,Deep Equal()メソッドを使用
    fmt.Println("a2aに等しい3ですか: ", reflect.DeepEqual(a2, a3))
}

出力:

a1aに等しい2ですか:  true
a2aに等しい3はい:  false