Goでは、構造体は、異なるタイプのゼロ以上の値を単一のユニットにグループ化する複合データ型です。構造体は、さまざまなフィールドを保持できるカスタムデータ型を作成するために使用され、データのより整理され構造化された表現が可能になります。
GOで構造体を定義するには、 struct
キーワードを使用して、それに続いて、structのフィールドを含む巻き毛のセットが続きます。各フィールドには名前とタイプがあります。構造を定義する方法の例は次のとおりです。
<code class="go">type Person struct { Name string Age int Email string }</code>
構造体を定義したら、そのインスタンスを作成してプログラムで使用できます。 Person
構造を作成して使用する方法は次のとおりです。
<code class="go">func main() { // Creating a new Person instance person := Person{ Name: "John Doe", Age: 30, Email: "john.doe@example.com", } // Using the fields of the struct fmt.Printf("Name: %s, Age: %d, Email: %s\n", person.Name, person.Age, person.Email) }</code>
この例では、新しいPerson
インスタンスを作成し、そのフィールドを初期化します。次に、これらのフィールドにアクセスし、それらを使用してその人の情報を印刷します。
GOで構造体を使用すると、いくつかの利点が得られます。
GOの構造体を初期化するには、いくつかの方法を使用できます。
フィールドバイフィールド初期化:
各フィールドの値を明示的に指定することにより、構造体を初期化できます。
<code class="go">person := Person{ Name: "John Doe", Age: 30, Email: "john.doe@example.com", }</code>
位置初期化:
また、構造体で定義されている順序で値を提供することにより、構造を初期化することもできます。
<code class="go">person := Person{"John Doe", 30, "john.doe@example.com"}</code>
ゼロ値初期化:
すべてのフィールドの値を指定しない場合、GOは自動的にゼロ値に設定します。
<code class="go">person := Person{Name: "John Doe"} // person.Age will be 0, and person.Email will be an empty string</code>
構造体内のフィールドにアクセスするには、DOT表記( structName.fieldName
)を使用します。これが例です:
<code class="go">fmt.Println(person.Name) // Output: John Doe fmt.Println(person.Age) // Output: 30 fmt.Println(person.Email) // Output: john.doe@example.com</code>
同じ表記法を使用して、構造体のフィールドを変更することもできます。
<code class="go">person.Age = 31 fmt.Println(person.Age) // Output: 31</code>
Goでは、匿名のフィールド(埋め込みフィールドとも呼ばれます)は、名前なしで定義された構造体のフィールドであり、タイプのみを指定します。タイプ自体はフィールド名として機能します。この概念により、1つの構造体を別の構造に埋め込むことができ、組み込み構造体のフィールドへのアクセスを簡素化できます。
匿名のフィールドで構造体を定義する方法は次のとおりです。
<code class="go">type Address struct { Street string City string Country string } type Person struct { Name string Age int Address // Anonymous field }</code>
Person
structのインスタンスを作成すると、 Person
インスタンスを介してAddress
構造体のフィールドに直接アクセスできます。
<code class="go">person := Person{ Name: "John Doe", Age: 30, Address: Address{ Street: "123 Main St", City: "Anytown", Country: "USA", }, } fmt.Println(person.Street) // Output: 123 Main St fmt.Println(person.City) // Output: Anytown fmt.Println(person.Country) // Output: USA</code>
匿名フィールドのユースケース:
要約すると、GO構造体の匿名フィールドは、より簡潔で再利用可能なコード構造を作成し、プログラムの柔軟性と読みやすさを向上させる強力な方法を提供します。
以上がGOの構造体とは何ですか?それらをどのように定義して使用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。