English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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()メソッドの使用 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