プログラムを設計するとき、構造体を使用するのは非常に一般的な方法です。 Go 言語では、構造はコードをより適切に整理および管理するのに役立つ非常に強力な概念です。この記事ではGoにおける構造体の使い方を詳しく解説していきます。
構造体とは何ですか?
構造はカスタム データ型であり、複数のデータ フィールドで構成されます。各フィールドには、数値、文字列、ブール値などの基本的なデータ型、または他の構造の組み合わせを使用できます。構造体のフィールドには、オブジェクトのプロパティと同様に、ドット表記を使用してアクセスできます。
Go では、型を使用して構造を定義できます。
type Person struct {
name string age int language []string
}
この例では、名前、年齢、言語の 3 つのフィールドを持つ Person という名前の構造体を定義します。 name は文字列型、age は int 型、そして language は文字列スライスです。次のコマンドを使用して、新しい Person 構造を作成できます。
person := person{名前: "Tom"、年齢: 25、言語: []string{"中国語"、"英語"}}
ドットは次のフィールドで使用できます。構造体 アクセス方法:
fmt.Println(person.name)
Go 構造体の匿名フィールド
Go では、匿名フィールドを使用して構造体をより詳細にすることもできます。コンパクト。匿名フィールドは構造体フィールドであり、名前がありません。 2 つ以上のフィールドが同じ型である場合、それらは匿名フィールドとして定義できます。
以下は匿名フィールドをサポートする例です:
type person struct {
name string address
}
type address struct {
street string city string state string
}
上記のコードでは、Person 構造体に address という名前の匿名フィールドが含まれています。この構造体は、番地、都市、州の 3 つのフィールドを持つ住所タイプも定義します。このようにネストされたフィールドにアクセスできます。
人 := 人{名前: "トム"、住所: 住所{通り: "メインストリート"、都市: "ニューヨーク"、州: "ニューヨーク"}}
fmt .Println(person.address.city)
Go 構造におけるネストされた構造
構造は相互にネストすることができるため、より複雑なデータ構造を作成できます。構造は別の構造内に埋め込むことができます。
type Person struct {
name string contact Contact
}
type Contact struct {
email string phone string address string
}
上記のコードでは、Person 構造体はボディ内に Contact 構造がネストされています。新しい Person 構造は次の方法で作成できます。
person := person{名前: "Tom"、連絡先: Contact{電子メール: "tom@gmail.com"、電話番号: "888-888-8888"、住所: "Main St."}}
fmt.Println(person.contact.phone)
Go 構造体のメソッド
Go では、構造体でメソッドを定義でき、これらのメソッドは構造体インスタンスを介して渡すことができます。電話すること。メソッドは、構造体を通じてのみ呼び出すことができる特別な関数です。
次のコードを使用してメソッドを追加できます。
type Person struct {
name string age int
}
func (p Person)sayHello() {
fmt.Printf("Hello, my name is %s, I'm %d years old.
", p.name, page)
}
上記のコードでは、sayHello() は Person という名前の構造体のメソッドです。
次のコードを使用して、このメソッドを呼び出すことができます。
# person := Person{name: "Tom", age: 25}person.sayHello()
以上がGo で構造体を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。