Golang では、インターフェイスはオブジェクトの動作を記述する型であり、インターフェイスを定義することで、オブジェクトの機能や対話方法を標準化し、異なる種類のオブジェクトの対話を容易にすることができます。
Golang では、インターフェイスのメソッド セットはメソッド定義のセットで構成されており、インターフェイスを実装する型はインターフェイスのすべてのメソッドを実装する必要があります。ただし、インターフェイスを実装する場合、明示的にインターフェイスの実装を宣言する必要はなく、クラスの継承やインターフェイスの実装も必要なく、インターフェイスのメソッドセットを実装するだけで済みます。インターフェースは動的ディスパッチの形式で実装されており、優れた柔軟性とスケーラビリティを備えています。
それでは、Golang でインターフェイスを作成および設定するにはどうすればよいでしょうか?次に以下の観点から紹介していきます。
まず、インターフェイスを定義し、type キーワードをインターフェイスに追加してインターフェイスの種類を定義し、インターフェイスのメソッド セットを定義する必要があります。例:
type MyInterface interface { Method1() string Method2() int }
上記のコードは、2 つのメソッド Method1 と Method2 を含む MyInterface という名前のインターフェイス タイプを定義します。インターフェイスで定義されたメソッドには特定の実装本体がなく、メソッド名と戻り値の型のみがあることに注意してください。
次に、インターフェイス メソッド セットを実装する構造体タイプを定義してインターフェイスを実装する必要があります。例:
type MyStruct struct{} func (m MyStruct) Method1() string{ return "Method1 is called." } func (m MyStruct) Method2() int{ return 100 }
上記のコードは、MyInterface インターフェイスの 2 つのメソッド Method1 と Method2 を実装する MyStruct という名前の構造体タイプを定義します。インターフェースを実装するメソッドがインターフェースの実装として認識されるためには、インターフェースで定義されているものとまったく同じメソッド名、パラメータリスト、戻り値の型を使用する必要があることに注意してください。この例では、MyStruct 型に設定されたメソッドは、MyInterface のメソッド セットも実装します。つまり、MyInterface インターフェイスが実装されます。
インターフェースの使用は、Golang のインターフェースに関する最も基本的な操作であり、インターフェース型の変数を定義することで、これにさまざまな値を割り当てることができます。
var i MyInterface i = MyStruct{} fmt.Println(i.Method1()) fmt.Println(i.Method2())
上記のコードは、MyInterfce 型の変数 i を定義し、それに MyStruct 型の変数を割り当てます。 MyStruct 型は MyInterface インターフェイスを実装しているため、MyInterface で定義されているすべてのメソッドにアクセスできます。出力結果は次のとおりです:
Method1 is called. 100
MyStruct 型の変数を MyInterface i 型の変数に割り当てる場合に注意してください。 、実際には、MyStruct 型の値のコピーを MyInterface 型変数 i に割り当てます。これは、C の仮想関数の実装に似ています。したがって、ポインタ型を使用してインターフェイスを実装する場合は注意してください。ポインタ型変数が指すオブジェクトが変更されると、インターフェイス実装の可用性に影響を与える可能性があるためです。
Golang では、インターフェイスはネスト、つまり、インターフェイス内のメソッド セットとして他のインターフェイス タイプをネストすることもサポートしています。例:
type MyInterface1 interface { Method1() string } type MyInterface2 interface { MyInterface1 Method2() int } type MyStruct struct{} func (m MyStruct) Method1() string{ return "Method1 is called." } func (m MyStruct) Method2() int{ return 100 } func main() { var i MyInterface2 i = MyStruct{} fmt.Println(i.Method1()) fmt.Println(i.Method2()) }
上記のコードは、入れ子になった MyInterface1 インターフェイスを定義し、MyInterface1 インターフェイスと MyInterface2 インターフェイスのメソッドを実装する MyInterface2 インターフェイスを定義します。 MyStruct 型はこれら 2 つのインターフェイスも実装しているため、i メソッドと call メソッドに割り当てることができます。
Golang では、オブジェクトの特定の型が分からないが、それを操作したい場合でも、インターフェイスを使用できます。それを完了するために。これは空のインターフェイスの概念です。空のインターフェイスは Golang の特別な型です。そのメソッド セットは空で、あらゆる種類のオブジェクトを表すことができます。例:
var i interface{} i = 1 fmt.Println(i)
上記のコードは、interface{} 型の変数 i を定義し、それに整数 1 を割り当てます。 Interface{} タイプは任意のタイプのオブジェクトを表すことができるため、i の値を出力して正しい結果を得ることができます。
上記は Golang でインターフェイスを作成および設定するための基本的な方法です。インターフェイスの使用をマスターすると、コードの柔軟性と拡張性が向上し、プログラムの可読性と保守性が向上します。
以上がgolang でインターフェイスを作成および設定する方法 (メソッドの簡単な分析)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。