Golang (または Go) は、Google によって開発されたオープンソース プログラミング言語です。独自の同時実行モデルとガベージ コレクターを通じて効率的なプログラミング エクスペリエンスを提供します。 Golang のインターフェイスとメソッドはその中心概念の 1 つであり、Golang プログラミング言語を習得するために非常に重要です。
インターフェイスはポリモーフィズムを実現する方法です。一連のプログラム コード仕様を定義します。Go 言語では、インターフェイス タイプと呼ばれます。これらは一連のメソッドを定義しますが、実装は提供しません。特定のインターフェイス型を明示的に宣言しなくても、Go プログラムは型が特定のインターフェイスの要件を満たしているかどうかを確認できます。
Golang ではインターフェースが非常に重要です。 Golang を使用したい場合は、Golang インターフェイスの定義と実装を理解する必要があります。以下は、Golang インターフェイス定義の例です。
package main import "fmt" type Interface1 interface { method1() string } type Interface2 interface { method2() int } type Interface3 interface { Interface1 Interface2 method3() bool } type Struct1 struct { name string } type Struct2 struct { age int } func (s1 *Struct1) method1() string { return s1.name } func (s2 *Struct2) method2() int { return s2.age } func (s3 *Struct1) method3() bool { return true } func main() { s1 := Struct1{name: "John"} s2 := Struct2{age: 30} var iInterface1 Interface1 = &s1 var iInterface2 Interface2 = &s2 var iInterface3 Interface3 = &s3 fmt.Println(iInterface1.method1()) fmt.Println(iInterface2.method2()) fmt.Println(iInterface3.method3()) }
この例では、3 つのインターフェイス、つまり Interface1
、Interface2
、および Interface3
を定義します。 。このうち、Interface3
は、Interface1
と Interface2
を継承しています。また、2 つの構造体 Struct1
と Struct2
を定義し、それらに対応するインターフェイスのメソッドを実装しました。 main()
関数では、これらのインターフェイスを使用してメソッドを呼び出します。
メソッドは、特定の型に関連付けられ、その型のデータにアクセスできる関数です。 Golang では、メソッドは関数を特定の型に制限する方法です。これらは、他のオブジェクトによって呼び出される動作のタイプを表すために使用できます。メソッドは、レシーバーの値を変更するかどうかに応じて、値メソッドまたはポインター メソッドになります。
以下は Golang でのメソッド定義の例です:
package main import "fmt" type Struct1 struct { name string } func (s1 Struct1) method1() string { return s1.name } func (s1 *Struct1) method2() { s1.name = "Jane" } func main() { s1 := Struct1{name: "John"} fmt.Println(s1.method1()) s1.method2() fmt.Println(s1.method1()) }
この例では、Struct1
の型を定義し、それに対して 2 つのメソッドを定義しますmethod1 ()
と method2()
。 method2()
のレシーバは構造体へのポインタであるため、構造体の値を変更できることに注意してください。 main()
関数では、Struct1
オブジェクトを作成し、これら 2 つのメソッドをそれぞれ呼び出します。
Golang では、インターフェースを構造のようにネストすることもできます。インターフェイスのネストを使用して、複数のインターフェイスの機能を組み合わせることができます。 Golang は、インターフェイスを他の型の値に変換するための型アサーション演算子も提供します。
以下は、Golang インターフェースのネストと型アサーションの例です:
package main import "fmt" type Interface1 interface { method1() string } type Interface2 interface { method2() int } type Struct1 struct { name string } func (s1 *Struct1) method1() string { return s1.name } func (s1 *Struct1) method2() int { return len(s1.name) } func main() { s1 := Struct1{name: "John"} var iInterface1 Interface1 = &s1 var iInterface2 Interface2 = iInterface1.(Interface2) fmt.Println(iInterface2.method2()) }
この例では、Interface1
および Interface2
インターフェースを定義します。 Struct1
構造に対して 2 つのメソッド method1()
と method2()
を実装します。 main()
関数では、Struct1
オブジェクトを Interface1
インターフェイスにキャストし、それを Interface2
インターフェイスに再度キャストします。次に、その method2()
メソッドを呼び出し、結果を出力します。
Golang では、インターフェイスとメソッドは最も重要な概念の 1 つです。これらは、Golang でのより効率的なプログラミング エクスペリエンスを提供します。インターフェイスを使用すると、型に依存しない抽象的な動作を表現できます。また、メソッドを使用すると、関数を特定の型に制限し、さまざまなデータやデータ型をより直接的な方法で操作できます。したがって、インターフェイスとメソッドの概念を理解することは、Golang プログラミングの重要な基礎となります。
以上がgolang のインターフェースとメソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。