LoginSignup
0

More than 5 years have passed since last update.

Golang インターフェースの使い方・メリット

Last updated at Posted at 2018-10-22

インターフェースの使い方

インターフェースは次のように定義します。

type [name] interface {
    [method_name],
}

インターフェースのメリット

簡単に使い方を説明します、、、

main.go

package main

import (
    "fmt"
)

type Named interface{ 
    Name() string
}

//インターフェースを通してメソッドを呼び出す
func CallName(named Named) {
    fmt.Println(named.Name())
}

type Dog struct{
    say string
}

//インターフェースの実装
func (d *Dog) Name() string {
    return d.say
}

type Cat struct{
    say string
}

//インターフェースの実装
func (c *Cat) Name() string {
    return c.say
}

func main() {
    dog := Dog{
               say: "Hello",
           }
    cat := Cat{
               say: "World",
           }

    CallName(&dog)
    CallName(&cat)
}
結果
Hello
World
  1. インターフェースNamedを定義し、その中にNameというメソッドを定義する。
  2. 構造体DogとCatを定義し、それぞれをレシーバに持つNameというメソッドを定義する。
  3. Nameメソッドを定義することでそのメソッドのレシーバである構造体はインターフェースを実装したことになる。
  4. インターフェースを実装したことでCall Nameをどちらのメソッドとしても呼び出すことができるようになる。

まとめ

インターフェースはメソッドのまとまりのようなもので、インターフェースの中に定義されているメソッドを全て使うことでそのメソッドのレシーバはインターフェースを実装したことになる。

これにより、インターフェースを通して各レシーバを持つメソッドを1つの関数から呼び出すことができるようになる。

間違っている箇所があればご指摘いただければ助かります。。。

-----参考サイト----
https://teratail.com/questions/60856

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