ホームページ  >  記事  >  バックエンド開発  >  golang のインターフェースの概念について話しましょう

golang のインターフェースの概念について話しましょう

PHPz
PHPzオリジナル
2023-04-14 13:45:14899ブラウズ

Golang は、シンプルさ、効率、セキュリティに重点を置いて設計されたまったく新しいプログラミング言語です。 Golang では、インターフェイスは非常に重要な概念であり、仕様の定義、ポリモーフィズムの実装、実装の詳細のカプセル化に使用できます。この記事では、読者が言語をよりよく理解し、使用できるように、Golang のインターフェイスの概念、構文、使用法を紹介します。

1. Golang インターフェースの概念

インターフェースは、オブジェクトの動作仕様を定義するために使用される抽象型です。インターフェイスはメソッドのセットのシグネチャを定義し、これらのメソッドを実装する型はインターフェイスの実装型と呼ぶことができます。インターフェイスは、静的型と動的型の 2 つの部分で構成されます。静的型はインターフェイスの型定義を指し、動的型はインターフェイスの特定の実装型を指します。

Golang のインターフェイスには、他のプログラミング言語と比較して、次のような多くの利点があります。

  1. シンプルな実装: Golang のインターフェイスは非常にシンプルで、一連のメソッド シグネチャを定義するだけです。それ。
  2. 呼び出しが簡単: インターフェイスは抽象型であるため、ポリモーフィックな呼び出しを簡単に実装できます。
  3. 優れたスケーラビリティ: インターフェイスはどのようなタイプでも実装できるため、優れたスケーラビリティを備えています。

2. Golang インターフェースの構文

Golang では、インターフェースの定義は非常に簡単です。type キーワードとinterface キーワードを使用するだけです。具体的な構文は次のとおりです:

type 接口名 interface{
    方法1(参数列表) 返回值列表
    方法2(参数列表) 返回值列表
    …
}

このうち、インターフェース名はユーザー名で定義される識別子であり、メソッドは関数シグネチャのセットです。 Golang のインターフェイス構文は非常に柔軟で、メソッド内のパラメータ リストと戻り値リストを必要に応じて定義できます。

以下、簡単な例を見てみましょう:

type Shape interface{
    Perimeter() float64
    Area() float64
}

この例では、 Perimeter() と Area() の 2 つのメソッドを含む Shape という名前のインターフェイスを定義します。 Perimeter() メソッドは float64 型の周囲を返し、Area() は float64 型の面積を返すことがわかります。

3. Golang インターフェースの使用方法

Golang では、1 つ以上のインターフェースを実装することで型仕様を定義できます。インターフェイスの使用方法は次のとおりです。

  1. インターフェイスの定義

インターフェイスを実装する前に、最初にインターフェイスを定義する必要があります。前述したように、インターフェイスは、インターフェイスの機能を記述する一連のメソッドを定義できます。 Golang では、インターフェイスの定義は非常に簡単で、type キーワードとinterface キーワードを使用するだけです。

  1. インターフェイスの実装

インターフェイスを実装するプロセスは、定義されたインターフェイス仕様に準拠するように、特定の種類の動作を標準化することです。型がインターフェイスによって定義されたメソッド シグネチャを使用する場合、その型はインターフェイスを実装していると言われます。 Golang では、実装インターフェイスは次の方法で実装できます。

type Circle struct{
    radius float64
}

func(circle Circle) Perimeter() float64{
    return 2 * math.Pi * circle.radius
}

func(circle Circle) Area() float64{
    return math.Pi * math.Pow(circle.radius, 2)
}

この例では、radius 属性を含む Circle という名前の構造体を作成しました。さらに、Shape インターフェイスの要件を実装するために、Perimeter() と Area() という 2 つのメソッドも定義しました。

  1. インターフェースの使用

Golang では、インターフェースを使用してポリモーフィックな呼び出しメソッドを実装できます。具体的には、インターフェイス型変数を特定の型にポイントし、その型によって実装されたインターフェイス メソッドを呼び出すことができます。例:

func main(){
    var shape Shape
    shape = Circle{radius: 2}
    fmt.Println(shape.Perimeter(), shape.Area())
}

この例では、Shape 型のインターフェイス変数を作成し、それをCircle 型の構造体にポイントします。 CircleはShapeインターフェースで指定されたメソッドを実装しているので、このプログラムはCircleの周囲長と面積を出力することができます。

4. Golang インターフェイスのケース

最後に、完全な Golang インターフェイスのケース、つまり電卓の実装を見てみましょう。コードの実装は次のとおりです。

type Calculator interface{
    Add(a, b float64) float64
    Sub(a, b float64) float64
    Mul(a, b float64) float64
    Div(a, b float64) float64
}

type Cal struct{}

func(cal Cal) Add(a, b float64) float64{
    return a + b
}

func(cal Cal) Sub(a, b float64) float64{
    return a - b
}

func(cal Cal) Mul(a, b float64) float64{
    return a * b
}

func(cal Cal) Div(a, b float64) float64{
    if b == 0 {
        return 0
    }
    return a / b
}

func main(){
    var cal Calculator
    cal = Cal{}
    fmt.Println(cal.Add(1,2), cal.Sub(3,1), cal.Mul(2,3), cal.Div(9,3))
}

この例では、Calculator という名前のインターフェイスを定義し、そのメソッド内に 4 つの Add()、Sub()、Mul()、および Div() メソッドを定義します。また、Cal という名前の構造体を作成し、Calculator インターフェイスに必要なすべてのメソッドを実装しました。 main 関数では、cal という名前のインターフェイス変数を定義し、それが Cal 構造体を指すようにします。 Cal は Calculator インターフェイスにすべてのメソッドを実装しているため、この変数を通じて加算、減算、乗算、除算の結果を出力できます。

つまり、Golang のインターフェイスは、コード設計における標準化、カプセル化、拡張において非常に優れた役割を果たすことができる非常に便利なツールです。この記事の紹介により、Golang インターフェースの概念、構文、使用法を理解していただけたと思いますが、実際のプログラミングでもこのツールを使いこなすことができるようになると思います。

以上がgolang のインターフェースの概念について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。