Golang でインターフェイス メソッドを実装する方法

PHPz
リリース: 2023-04-03 10:16:59
オリジナル
1741 人が閲覧しました

Go 言語は、コードの再利用とオブジェクト指向プログラミングの重要な手段であるインターフェイス メカニズムを提供します。 Go では、インターフェイス タイプは、一連のメソッドのシグネチャのコレクションです。インターフェイス タイプの値には、これらのメソッドを実装する任意の値を格納できます。

Go 言語では、インターフェイスはメソッドのコレクションを保存および転送するために使用されるコンテナです。インターフェイスはコードを高度に分離できるため、コードの柔軟性とスケーラビリティが向上します。インターフェイスの設計は Go 言語の非常に重要な部分であり、高品質の Go コードを作成するには、インターフェイスの実装方法を深く理解することが不可欠です。

次に、Golang でのインターフェイス メソッドの実装を紹介します。

1. Golang におけるインターフェースの定義

Go 言語では、インターフェース定義において、インターフェースがメソッドの集合で構成されることが規定されています。インターフェイス タイプで一連のメソッドを定義することにより、インターフェイスを定義できます。

type interfaceName インターフェイス {
method_1 (param1 type1, param2 type2) return_type
method_2 (param1 type1, param2 type2) return_type

method_n (param1 type1, param2 type2) return_type
}

インターフェース定義で設定するメソッドは、1 つ以上のメソッドで構成できます。各メソッドは操作を定義し、操作のパラメーターと戻り値の型を指定します。インターフェイスのメソッドのコレクションは、通常、単純なコメントで記述されます。インターフェイスにメソッドが 1 つだけ含まれている場合、そのインターフェイスは関数タイプと呼ばれます。

2. Golang でのインターフェイスの実装

Go 言語では、インターフェイスを実装するには、インターフェイス内のすべてのメソッドを実装するだけで済みます。つまり、ある型がインターフェイスに含まれるすべてのメソッドを定義すると、その型は自動的にインターフェイスを実装します。 Go 言語には明示的な実装構文がないため、型によって実装されるインターフェイスのセットは型によって自動的に決定されます。

type InterfaceObject インターフェイス {
Func1() int
Func2() float64
}

type Impl1 struct {
Property1 int
}

func (impl Impl1) Func1() int {
return impl.Property1
}

func (impl Impl1) Func2() float64{
return float64(impl.Property1) Property1) / 0.618
}

func main() {
impl1 := Impl1{Property1:100}
var intf InterfaceObject = impl1
fmt.Printf("%d\ n" , intf.Func1())
fmt.Printf("%.2f\n", intf.Func2())
}

Go 言語でのインターフェイス実装の場合、特定のインターフェイスの型はインターフェイスを実装するデータ型であり、この型のオブジェクト値をインターフェイス オブジェクトに割り当てることができます。

3. Golang におけるインターフェイスのポリモーフィズム

Golang では、インターフェイスを実装する型の各変数はインターフェイス オブジェクトと呼ばれます。変数の型はインターフェイスの名前で、変数の値はインターフェイスのインスタンスです。型のインスタンスまたはポインタをインターフェイス変数に割り当てることができます。インターフェイス オブジェクト内のメソッドにアクセスする必要がある場合、プログラムは特定の型を使用する代わりに、インターフェイス名をインターフェイス内のメソッド名として使用します。

type InterfaceObject インターフェイス {

Func1() int
ログイン後にコピー

}

type Impl1 struct {

Property1 int
ログイン後にコピー

}

func (impl Impl1) Func1() int {

return impl.Property1
ログイン後にコピー

}

func main() {

impl1 := Impl1{Property1:100}
var intf InterfaceObject = impl1
fmt.Printf("%d\n", intf.Func1())
ログイン後にコピー

}

Golang のインターフェイス多態性については、インターフェイス オブジェクトを作成するときに次のことがわかります。 impl1 型は自動的に InterfaceObject 型の値に変換され、InterfaceObject の Func1() メソッドを呼び出すことができます。

4. Golang でのインターフェースのネスト

Go 言語では、インターフェースのネストはインターフェースの型を組み合わせるためのメカニズムです。ネストされたインターフェイスは、複数のインターフェイスのメソッドを組み合わせて、特定の型がこれらのインターフェイスのメソッド要件を同時に満たせるようにします。

type Drawer インターフェイス {

Draw() string
ログイン後にコピー

}

type Closer インターフェイス {

Close() bool
ログイン後にコピー

}

type FileHandler インターフェイス {

Drawer
Closer
ログイン後にコピー

}

func main() {

fh := FileHandler{}
fmt.Print(fh.Draw())  //输出为空字符串
fmt.Print(fh.Close()) //输出false
ログイン後にコピー

}

上記のコードでは、Drawer、Closer、Filehandler の 3 つのインターフェイスが定義されています。Drawer と Closer は 2 つの単純なインターフェイスです。インターフェイス、Drawer インターフェイスと Closer インターフェイスは FileHandler にネストされています。インターフェイスを構成することで、より複雑なインターフェイス タイプを定義し、実装をより柔軟で拡張可能にすることができます。

概要

Go 言語では、インターフェイスは非常に強力で重要なプログラミング ツールです。インターフェイスの実装を通じて、コードの再利用、柔軟性、スケーラビリティを向上させることができます。これは実際の開発では非常に一般的です。技術的に言えば、ポリモーフィズム、合成、デザイン パターンなどはインターフェイスを使用して実現できます。そのため、高品質の Go コードを作成するには、Go 言語インターフェイスの使用とメソッドの実装を徹底的に検討することが重要です。

以上がGolang でインターフェイス メソッドを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!