LoginSignup
0
0

More than 1 year has passed since last update.

Go言語で説明する「抽象化」について

Posted at

Go言語では、インターフェースを使用して抽象化を実現します。
インターフェースは、メソッドの集合体であり、そのメソッドのシグネチャー(引数の型、戻り値の型など)を定義します。
具体的な型は、そのインターフェースを実装することで、そのインターフェースを満たすことができます。

以下は、簡単な例です。
Animalというインターフェースを定義し、そのインターフェースを実装するDogCatという2つの具象型を定義します。 MakeSound()メソッドは、Animalインターフェースで定義されたメソッドであり、どちらの具象型でも異なる音を出すように実装されます。 main関数では、MakeSound()メソッドを呼び出すことにより、DogCatの両方が異なる音を出すことが確認できます。

package main

import "fmt"

type Animal interface {
    MakeSound()
}

type Dog struct{}

func (d Dog) MakeSound() {
    fmt.Println("Woof!")
}

type Cat struct{}

func (c Cat) MakeSound() {
    fmt.Println("Meow!")
}

func main() {
    animals := []Animal{Dog{}, Cat{}}

    for _, animal := range animals {
        animal.MakeSound()
    }
}

出力結果

Woof!
Meow!

この例では、Animalというインターフェースを使用して、DogCatという2つの具象型を抽象化しています。
MakeSound()メソッドを定義することで、DogCatの両方がAnimalインターフェースを満たすことができ、同じスライス内に格納され、MakeSound()メソッドを呼び出すことができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0