Golang インターフェースの学習: 実装原則と設計パターン
Golang プログラミング言語を学習する過程において、インターフェースは非常に重要な概念です。インターフェイスは Golang において非常に重要な役割を果たしており、ポリモーフィズム、分離、合成を実現する上で重要な役割を果たします。この記事では、Golang インターフェースの実装原則といくつかの一般的な設計パターンを紹介し、読者がインターフェースをよりよく理解して適用できるように、具体的なコード例も示します。
Golang では、インターフェイスはメソッドのセットを定義する抽象型です。インターフェイスの実装原理は、主に、インターフェイス タイプとインターフェイス値という 2 つの基本概念に基づいています。
type InterfaceName interface { Method1() returnType1 Method2() returnType2 // 其他方法 }
インターフェイス タイプでは、特定の実装を行わずに、メソッドのシグネチャのみを宣言する必要があります。
type InterfaceName interface { Method1() returnType1 Method2() returnType2 } type StructName struct{} func (s StructName) Method1() returnType1 { // 方法1的具体实现 } func (s StructName) Method2() returnType2 { // 方法2的具体实现 } var i InterfaceName i = StructName{}
上の例では、変数 i
の型は InterfaceName
で、その値は StructName{ }## #実例。
type Strategy interface { DoSomething() } type StrategyA struct{} func (s StrategyA) DoSomething() { // 策略A的具体实现 } type StrategyB struct{} func (s StrategyB) DoSomething() { // 策略B的具体实现 }
type Observer interface { Update() } type Subject struct { observers []Observer } func (s Subject) Notify() { for _, observer := range s.observers { observer.Update() } }
// 定义接口 type Shape interface { Area() float64 } // 实现结构体 type Rectangle struct { Width float64 Height float64 } func (r Rectangle) Area() float64 { return r.Width * r.Height } type Circle struct { Radius float64 } func (c Circle) Area() float64 { return 3.14 * c.Radius * c.Radius } func main() { // 创建一个矩形实例 rectangle := Rectangle{Width: 5, Height: 3} // 创建一个圆形实例 circle := Circle{Radius: 2} // 调用接口方法计算面积 shapes := []Shape{rectangle, circle} for _, shape := range shapes { fmt.Println("Area:", shape.Area()) } }
Area メソッドを含む
Shape インターフェイスを定義します。次に、
Rectangle 構造体と
Circle 構造体がそれぞれ実装され、
Area メソッドが実装されました。最後に、インターフェイス
Shape を通じて、さまざまな形状の面積を計算できます。
以上がGolang インターフェースの学習: 実装原則と設計パターンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。