Go は厳密に型指定されたプログラミング言語であり、他のプログラミング言語とは異なり、1 つ以上のメソッドのシグネチャを定義することはできますが、実装することはできないインターフェイス型を持っています。このインターフェイスのメソッドを実装すると、異なるデータ型を持つ異なる種類のオブジェクトを同じインターフェイス型に割り当てて処理できるため、プログラミングがより柔軟で拡張可能になります。
Golangにおけるインターフェースの使い方を詳しく紹介していきます。
Golang では、インターフェースはコントラクトを定義する方法であり、一部のオブジェクトによって実装される必要があるメソッドのセットを定義します。オブジェクトがインターフェイス内のすべてのメソッドを実装している場合、そのオブジェクトはインターフェイスを実装しているとみなされます。キーワード インターフェイスを通じてインターフェイスを定義できます。その定義構文は次のとおりです。
type interface_name interface { method_name1 [return_type] method_name2 [return_type] ... method_namen [return_type] }
インターフェイスを定義した後、このインターフェイスを実装することで制限メソッドを実現できます。の目標。以下は簡単な例です:
package main import "fmt" type Printer interface { Print() } //定义接口 type Hero struct { Name string Age int Address string }//定义一个结构体 func (h *Hero) Print() { fmt.Println("Name:", h.Name) fmt.Println("Age: ", h.Age) fmt.Println("Address: ", h.Address) }//实现接口 func main() { hero1 := &Hero{Name: "Diana Prince", Age: 33, Address: "Washington, D.C."} hero1.Print() }//使用接口
上の例では、Print() メソッドが 1 つだけある Printer インターフェイスを定義し、インターフェイス () メソッドで Print を実装するための構造体 Hero を定義しました。最後に、hero1 を使用して Print() メソッドを呼び出します。
空のインターフェイスは、メソッドが含まれていないインターフェイスです。つまり、メソッドを実装する必要がありません。空のインターフェイスには、任意のタイプの値を割り当てることができます。変数。
空のインターフェース タイプのインターフェース{}は、任意の変数によって割り当てることができ、任意のデータ型のコンテナとして使用できます。関数は、空のインターフェイス タイプのパラメータを受け取ることも、空のインターフェイス タイプの値を返すこともできます。
空のインターフェイスを使用する場合、多くの場合、変数を特定の型に変換する必要があります。Go は、インターフェイスが指す値の型をチェックできる型アサーション メカニズムを提供します。インターフェイス型変数。
value, ok := var_interface.(Type_name)
このうち、var_interface はインターフェイス変数、Type_name はアサートする必要のある型、value はアサーション成功後に変換された値、ok はアサーションが成功したかどうかを表します。
インターフェースを結合したり埋め込んだりして、インターフェースの機能を拡張できます。
type Interface1 interface { method1() } type Interface2 interface { method2() } type Interface3 interface { Interface1 Interface2 method3() }
上記の例では、Interface3 は Interface1 と Interface2 を組み合わせてすべてのメソッドを持ち、Interface3 は独自のメソッド method3() を持つこともできます。
さらに、Golang ではインターフェイスの埋め込みもサポートされています。
type Animals interface { Name() string } type Dog struct { Animals //继承接口 } func (d Dog) Bark() { fmt.Println("汪汪汪!") }
上記の例では、Animals インターフェイスを埋め込み、Name() メソッドを実装して、インスタンス化後に Dog が Animals の Name() メソッドを継承することを実現します。
インターフェースは Golang でコントラクトを定義する方法であり、メソッドの実装を制限する可能性があります。インターフェイスの実装により、異なる型のオブジェクトを同じ方法で処理できるようになります。同時に、この言語では、型アサーション、インターフェイスの組み合わせ、インターフェイスの埋め込みなどの機能も提供され、インターフェイスのアプリケーションがより柔軟で拡張可能になります。
以上がGolang でのインターフェースの使用法を紹介します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。