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

リリース: 2019-11-29 15:24:23
転載
2859 人が閲覧しました

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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート