Go 言語では、構造体は単一の名前でグループ化された変数 (フィールド) のコレクションです。これは、関連情報を保持するためのカスタム データ構造を作成できる複合データ型です。 Go の構造体は、C や C++ などのオブジェクト指向プログラミングのクラスに似ていますが、継承をサポートしていません。代わりに、コードの再利用を実現するためにコンポジションに依存しています。この記事では、Golang の構造体と、構造体メンバーを宣言してアクセスする方法について説明します。
Golang の構造とは
Golang では、構造体は、0 個以上の名前付きフィールドで構成される複合データ型であり、それぞれが特定の型を持ちます。構造体のフィールドは、他の構造体、配列、関数、またはインターフェイスを含む任意の型にすることができます。
Golang の構造体の例を次に示します。
タイプ 人の構造体 {
フルネーム文字列
YearsOld int
所在地住所
}
タイプ アドレス構造体 {
StreetName 文字列
CityName 文字列
CountryName 文字列
}
ここでは、FullName、YearsOld、および Location の 3 つのフィールドを持つ Person 構造を定義しました。 Location フィールド自体は、StreetName、CityName、および CountryName の 3 つのフィールドを持つ構造体です。
Golang で構造体を宣言する方法
を使用して Golang で構造体を宣言できます。 タイプ キーワード。構造体の名前は、 タイプ キーワード、およびそのフィールドは中括弧で囲まれています { } . Go で構造体を宣言するための構文は次のとおりです。
タイプ StructName 構造体 {
フィールド名1 フィールドタイプ1
フィールド名2 フィールドタイプ2
...
}
以下は、それぞれ string 型と int 型の name と age の 2 つのフィールドを持つ Person という名前の構造体を宣言する方法の例です。
名前文字列
年齢整数
}
上記のコードでは、 タイプ という名前の新しい構造体を宣言するためのキーワード 人 2 つのフィールドを持つ 名前 文字列型と 年 int 型の。フィールドは 改行 キャラクターだけど セミコロン (;) それらを分離するためにも使用できます。
Golang で構造体メンバーにアクセスする方法
Go 言語で構造体インスタンスのフィールドにアクセスするには ドット (「.」) 演算子が使用されます。このドット演算子の後にはフィールド名が続きます。 Person 構造体インスタンスの name フィールドと age フィールドにアクセスする方法の例を次に示します。
/// 新しいを作成します ` 人 ` 名前付き構造体インスタンス 「キャッシュ」 と年齢 24kash := 人 { 名前: 「キャッシュ」 、 年: 24 }
/// のフィールドにアクセスします。 ` 現金 ` 構造体インスタンス
fmt.Println ( kash.name ) /// 出力: 「キャッシュ」
fmt.Println ( 現金年齢 ) /// 出力: 24
上記のコードでは、kash という名前の新しい Person 構造体インスタンスを作成しました。 現金 と年齢 24 .次に、次を使用して kash 構造体インスタンスの name フィールドと age フィールドにアクセスします。 (「.」) オペレータに送信し、それらをコンソールに出力します。
構造体インスタンスのフィールドは、ドット表記ではなくドット表記を使用してアクセスされることに注意することが重要です。 矢印 表記 (->) 他のいくつかのプログラミング言語で使用されます。ドット表記は、構造体のフィールドや、他の型のプロパティやメソッドにアクセスするために、Go 全体で一貫して使用されます。
Golang で構造体メンバーを宣言してアクセスするサンプル コード
以下は、Go で Person 構造体を宣言し、その値を画面に出力する完全な例です。
パッケージメイン輸入 'fmt'
タイプ 人の構造体 {
名前文字列
年齢整数
}
関数メイン ( ) {
/// 新しいを作成します ` 人 ` 名前付き構造体インスタンス 「キャッシュ」 と年齢 24
kash := 人 { 名前: 「キャッシュ」 、 年: 24 }
/// 印刷する ` 名前 ` と ` 年 ` の ` 現金 ` コンソールへの構造体インスタンス
fmt.Printf ( 「名前: %s \n ' 、kash.name )
fmt.Printf ( '年齢: %d \n ' 、kash.age )
}
上記のコードでは、最初に 人 構造体。この構造体には、名前と年齢の 2 つのフィールドが含まれています。その後、kash という名前の新しい Person 構造体インスタンスを作成しました。 現金 と年齢 24 .
名前と年齢のフィールドを表示するには、 fmt.Printf との機能 %s と %d 名前フィールドと年齢フィールドをそれぞれ出力するフォーマット指定子。
実行後、次のコードがコンソールに表示されます。
構造体を関数の引数として渡す方法
Go で関数の引数として構造体を渡すには、関数シグネチャで構造体の型をパラメーターの型として指定し、関数を呼び出すときに構造体のインスタンスを引数として渡すだけです。
サンプルコード
以下の例は、Person 構造体インスタンスを引数として Go 言語の関数に渡し、その値を画面に出力する方法を示しています。
パッケージメイン輸入 'fmt'
/// という名前の構造体を宣言します ` 人 ` 2 つのフィールド: ` 名前 ` と ` 年 `
タイプ 人の構造体 {
名前文字列
年齢整数
}
/// 宣言する 関数 命名された ` printPerson ` それは ` 人 ` 構造体 として 引数
関数 printPerson ( 人 ) {
fmt.Printf ( 「名前: %s \n ' 、p.name )
fmt.Printf ( '年齢: %d \n ' 、ページ )
}
関数メイン ( ) {
/// 新しいを作成します ` 人 ` 名前付き構造体インスタンス 「キャッシュ」 と年齢 24
kash := 人 { 名前: 「キャッシュ」 、 年: 24 }
/// 渡す ` 現金 ` 構造体インスタンスを ` printPerson ` 関数
printPerson ( 現金 )
}
上記のコードでは、最初に 2 つのフィールドを持つ Person 構造体を宣言しました。 名前、 と 年 .次に、という名前の関数を宣言します printPerson Person 構造体を引数として取り、fmt.Printf 関数を使用してその名前と年齢のフィールドを画面に出力します。
メイン関数では、kash という名前の新しい Person 構造体インスタンスを作成しました。 現金 そして 24 歳です。次に、printPerson 関数を呼び出して以下を渡すことにより、kash 構造体インスタンスを printPerson 関数に渡します。 現金 引数として。
上記のコードを実行すると、コンソールに次の出力が表示されます。
結論
Golang では、構造体は複雑なデータ型を表し、関連するデータをカプセル化できます。構造体は、1 つ以上のフィールドで構成されるデータ型で、それぞれに特定の名前と型が与えられています。構造体のフィールドは、他の構造体、配列、関数、またはインターフェイスを含む任意の型にすることができます。この記事では Go 構造体について詳しく説明しました。構造体要素の宣言とアクセスの詳細については、記事をお読みください。