ホームページ  >  記事  >  バックエンド開発  >  Go言語でのインターフェースの使用

Go言語でのインターフェースの使用

尚
転載
2019-11-29 15:24:232857ブラウズ

Go言語でのインターフェースの使用

Go におけるインターフェイスの意味は、他の言語のインターフェイスの意味と変わりません。インターフェイスは、仕様または規約の一種として理解されます。型はインターフェイスを「実装」しますか?それは、この型がインターフェイスで定義されているすべてのメソッドを実装しているかどうかによって異なります。 (推奨: go 言語チュートリアル )

1. インターフェイスの定義と使用。

たとえば、

type I interface{
    Get() int
    Put(int)
 
}

この段落では、Get と Put という 2 つの関数を含むインターフェイスを定義します。

わかりました。私のインターフェイスの 1 つです。このインターフェイスは次のとおりです。実装済み:

type S struct {val int}
func (this *S) Get int {
    return this.val
}
func (this *S)Put(v int) {
    this.val = v
 
}

この構造体 S はインターフェイス I

2 の実装です。空のインターフェイス

空のインターフェイス インターフェイスの場合{} は実際にはジェネリックの概念に非常に似ています。どの型も空のインターフェイスを実装します。

次は例です:

A 関数はそのような関数を実装します:

任意のオブジェクトをパラメータとして受け取ります。オブジェクトがインターフェイス I を実装している場合は、インターフェイス I を呼び出します。 Get メソッド

多くの言語にはこのロジックがあります:

function g(obj){
    if (obj is I) {
        return (I)obj.Get()
    }
 
}

これは Go で実装されています:

func g(any interface{}) int {
    return any.(I).Get()
 
}

Any.(I) ここは非常にセマンティックですか? "I インターフェイスを実装する任意のオブジェクト"

3. Go でインターフェイスを記述する方法:

インターフェイスの例をいくつか見てみましょう:

func SomeFunction(w interface{Write(string)}){
    w.Write("pizza")
 
}

この例では、インターフェイスがパラメータで直接定義されており、これは非常に特殊です...

func weirdFunc( i int ) interface{} {
  if i ==  0 {
    return "zero"
  }
  return i;
}

この例では、string または int を返すことができるため、return value は、 Go パッケージで多数見られるインターフェイスに設定されます。

以上がGo言語でのインターフェースの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。