Golang は、多くの高度な機能を備えた非常に人気のあるプログラミング言語です。主な特徴の 1 つはオブジェクト指向プログラミングであり、構造体を使用してオブジェクト指向のクラスと同様の概念を実装できます。この記事ではGolangを使ってクラスを実装する方法を紹介します。
Golang では、構造体は、関連するデータ フィールドのセットを格納するために使用されるカスタム データ型です。文字列、整数、浮動小数点など、さまざまなタイプのフィールドを含めることができます。
構造体を定義するための構文は次のとおりです。
type StructName struct { field1 type1 field2 type2 ... }
このうち、StructName
は構造体の名前、field1
、## です。 #field2 などは構造体のフィールド名、
type1、
type2 などは対応するフィールドのデータ型です。
Person には、名前と年齢の 2 つのフィールドが含まれています。
type Person struct { Name string Age int }
p := Person{ Name: "张三", Age: 18, }
func (receiver ReceiverType) MethodName(args...) return_type { // 方法实现 }
receiver はメソッド レシーバー、
ReceiverType はポインタまたは値の型、
MethodName はメソッド名、
args はパラメータ、
return_type は戻り値の型です。
Person 構造体にメソッド
SayHello を定義して、挨拶できるようにする方法を示しています。
func (p Person) SayHello() { fmt.Printf("您好,我叫%s,今年%d岁。\n", p.Name, p.Age) }
Person 型のレシーバーを受け入れ、
Person インスタンスの名前と年齢を出力します。
person 型のフィールドとクラスを表す別のフィールドを含む
Student 構造体を定義できます。
type Student struct { person *Person class string }
Student 構造体の
Person 構造体のメソッドを拡張できます。メソッドの実装では、
person フィールドを使用して、
person 構造体のフィールドにアクセスできます。
func (s Student) Study() { fmt.Printf("%s在%s班级学习...\n", s.person.Name, s.class) } func (s Student) SayHello() { s.person.SayHello() fmt.Printf("我在%s班级上学。\n", s.class) }
package main import "fmt" type Person struct { Name string Age int } func (p Person) SayHello() { fmt.Printf("您好,我叫%s,今年%d岁。\n", p.Name, p.Age) } type Student struct { person *Person class string } func (s Student) Study() { fmt.Printf("%s在%s班级学习...\n", s.person.Name, s.class) } func (s Student) SayHello() { s.person.SayHello() fmt.Printf("我在%s班级上学。\n", s.class) } func main() { p := Person{ Name: "张三", Age: 18, } s := Student{ person: &p, class: "高中一年级", } s.SayHello() s.Study() }
您好,我叫张三,今年18岁。 我在高中一年级班级上学。
以上がGolangを使用してクラスを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。