Golang は、Google によって開発された非常に人気のあるプログラミング言語であり、その独特の構文と強力なパフォーマンスにより、広く普及しています。 Golang では、メソッド宣言はオブジェクト指向プログラミングにおいて重要な役割を果たすため、非常に重要な基礎知識です。
Golang では、メソッドを使用して型の機能を拡張できます。メソッドは、構造体または任意の型 (基本型も含む) のソース コード ファイルで定義できます。この記事では、メソッドの構文、パラメーターと戻り値の型など、Golang のメソッド宣言の基本について説明します。
メソッド構文
Golang では、次の構文を使用してメソッドを宣言できます:
func (t Type) methodName(parameterList) (returnTypeList) {
// 方法体
}
このうち、func はメソッドの宣言に使用されるキーワード、Type はレシーバーパラメータの型、methodName はメソッドの名前、parameterList はメソッドのパラメータリスト、およびreturnTypeList はメソッドの戻り値のリストです。
上記の構文では、Type には構造体の型または他の型を指定できます。レシーバー パラメーターはメソッドが定義されている型です。つまり、メソッドが呼び出されるインスタンスを使用してメソッドにアクセスできます。構造体の型を定義すると、それを使用して次のようなメソッドを呼び出すことができます。
type Rectangle struct {
width, height float64
}
func (r Rectangle) area () float64 {
return r.width * r.height
}
r := Rectangle{3, 4}
fmt.Println(r.area())
上記のコードでは、次のように定義します。 Rectangle 型と area() メソッド area() メソッドのレシーバーパラメータは Rectangle 型です。 Rectangle インスタンス r を作成し、それを使用して area() メソッドを呼び出し、長方形の面積を計算します。
続いてパラメータ一覧と戻り値一覧を見てみましょう。パラメータ リストには 0 個以上のパラメータが含まれており、これらのパラメータの型は有効な Golang 型であれば何でも構いません。戻り値リストはメソッドの戻り値を表し、0 個以上の戻り値で構成され、これらの戻り値の型は有効な Golang 型にすることもできます。
これは、2 つのパラメーターと戻り値を持つメソッドを定義する方法を示す例です:
type Person struct {
name string age int
}
func (p Person) fullName(firstName string, lastName string) string {
p.name = firstName + " " + lastName return p.name
}
person := person{"ジェリー", 28}
fmt.Println( person.fullName( "John", "Doe"))
この例では、Person タイプと fullName() メソッドを定義します。 fullName() メソッドには、firstName と lastName という 2 つのパラメータがあり、文字列型の戻り値もあります。 fullName() メソッドでは、firstName と lastName を組み合わせて完全な名前を作成し、それを Person 構造体の name フィールドに割り当て、この名前を返します。
パラメータと戻り値の型
Golang メソッドのパラメータ リストと戻り値のリストは非常に柔軟で、有効な Golang データ型であればどれでも使用できます。メソッド定義では、パラメーターと戻り値の型は同じであっても異なっていてもかまいません。次の例を見てみましょう。
type Student struct {
name string age int grade int addresses []string
}
func (s *Student) changeName(name string) {
s.name = name
}
func (s *Student) getAddresses() []string {
return s.addresses
}
student := Student{"ジョー", 12, 6, [ ] string{"北京", "上海"}}
fmt.Println(student.name)
student.changeName("Tom")
fmt.Println(student.name)
address :=student.getAddresses()
fmt.Println(addresses)
上記のコードでは、Student 構造体と 2 つのメソッド、changeName() と getAddresses() を定義します。 changeName() メソッドのレシーバ パラメータは Student 構造体へのポインタであり、戻り値はありません。一方、getAddresses() メソッドのレシーバ パラメータは Student 構造体へのポインタであり、その戻り値は文字列配列です。
changeName() メソッドでは、Student インスタンスの名前フィールドを新しい値に設定し、getAddresses() メソッドでは Student インスタンスのアドレス フィールドを直接返します。
概要
この記事で述べたように、メソッド宣言は Golang プログラミングの非常に重要な部分です。その中でも、メソッドの構文、パラメーター、戻り値の型の 3 つの点に注意する必要があります。 Golang のメソッドの定義と使い方を理解することで、Golang の優れた機能をより有効に活用し、より効率的で優れたアプリケーションを開発することができます。
以上がgolangのメソッド宣言の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。